Ich möchte in einem Programm, das eMails aus Outlook-Archivdateien einliest, eine Konvertierung von Mail-Texten, die in Windows 1252 codiert sind, nach UTF-8 durchführen. Dafür gibt es die String-Konvertierungsfunktion CP1252ToUTF8, die mit dem Unit LConvEncoding zur Verfügung gestellt wird. Wenn ich dieses Unit allerdings einbinde, wirft der Compiler die fatale Fehlermeldung aus: Unit nicht gefunden. Längere Forensuche brachte mir zwei Erkenntnisse:
1) FPC 3.0.4 enthält normalerweise dieses Unit.
2) Es könnte ein Problem mit den symbolischen Links zu FPC geben.
Ersteres ist nicht gesichert, mein Stöbern in den Installationspaketen erbrachte keine Klarheit. Letzteres habe ich überprüft, der Ort, wo Ubuntu den Compiler samt Units im Datenbaum ablegt ist offenbar etwas neben der Norm, aber alles ist super verlinkt.
So sieht das winzige Testprogramm aus, das ich zur Fehlersuche auf das Nötigste eingedampft habe:
Code: Alles auswählen
Program conv;
{$MODE OBJFPC}{$H+}
uses
LConvEncoding, SysUtils, StrUtils, Crt;
var
Datei: Text;
Ort, Zeile: UniCodeString;
rs: RawByteString;
begin
ClrScr();
Ort:='/home/max/Mails/Archivordner/2005';
Assign(Datei, Ort + '/409');
Reset(Datei);
while not eof(Datei) do
begin
ReadLn (Datei, rs);
SetCodePage(rs, 1252, false);
Zeile:=CP1252toUTF8(rs);
Writeln(Zeile);
end;
end.
Code: Alles auswählen
conv.pas(4,5) Fatal: Can't find unit LConvEncoding used by conv
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
Wo ist das Problem?
Hardware: Mac Mini (6.2 von 2012 mit 4 × Intel Core i5-2415M CPU@2.30GHz)
System: Kubuntu 20.04.2 LTS. Kein anderes Betriebssystem installiert.