Hmm..
Quick and Dirty:
Delphi-Quellcode:
function LoadUTF16ToAnsiString(AFileName: string): AnsiString;
var
tmpFile : TFileStream;
tmpBOM : WideChar;
tmpsize : Int64;
tmpWide : WideString;
i : integer;
begin
result := '';
tmpFile := TFileStream.Create(AFileName,fmOpenRead or fmShareDenyNone);
try
if tmpFile.Read(tmpBOM, sizeof(tmpBOM)) = sizeof(tmpBOM) then begin
if ((tmpBOM = Widechar($FEFF)) or (tmpBOM = Widechar($FFFE))) then begin
tmpsize := (tmpFile.size -2) Div SizeOf(tmpWide[1]);
setlength(tmpWide,tmpsize +1);
tmpWide[tmpsize +1] := #0;
tmpFile.Read(tmpWide[1],tmpSize * SizeOf(tmpWide[1]));
if tmpBOM = Widechar($FFFE) then
for i := 1 to length(tmpWide) do tmpWide[i] := WideChar(Swap(Ord(tmpWide[i])));
result := tmpWide;
end else begin
tmpFile.Position := 0;
setlength(result,tmpFile.size);
tmpFile.Read(result[1],tmpFile.size);
end;
end else begin
tmpFile.Position := 0;
setlength(result,tmpFile.size);
tmpFile.Read(result[1],tmpFile.size);
end;
finally
tmpFile.Free;
end;
end;
Wie geschrieben Quick and Dirty..
Funktioniert aber nur zufriedenstellend, wenn in der Datei nur Zeichen aus dem ANIS-Bereich verwendet werden.
Sollten dort
Unicode/Sonderzeichen enthalten gewesen sein, dürften diese damit weg sein