Zitat von
marabu:
Moin Micha,
welche Kodierung hat die Datei - UTF8 oder UTF16?
Hast du ein Byte-Order-Mark geschrieben?
Hey, danke für deine schnelle Antwort.
Den Programmcode für das
Unicode-Schreiben, habe ich damals auch hier aus der Delphi-Praxis bekommen:
Delphi-Quellcode:
function TSteuerdatei.SaveAsUnicode: Boolean;
var
data: String;
fs: TFileStream;
b, buffer: ^Word;
size: Integer;
i: Integer;
begin
data := AufbereitenAusgabe;
size := (Length(data)+1) * 2;
GetMem(buffer, size);
try
b := buffer;
b^ := $FEFF; //BOM = Byte Order Mark
inc(b);
//string copieren
for i := 1 to Length(data) do
begin
b^ := ord(data[i]);
inc(b);
end;
//FileStream schreiben
fs := TFileStream.Create(FPfadDateiName, fmCreate);
try
fs.WriteBuffer(buffer^, size);
finally
fs.Free;
end;
FFeldListe.Clear;
Result := True;
finally
FreeMem(buffer);
end;
end;
Und es sieht so aus (habe etwas Probleme, das mit den Zeigern richtig zu verstehen, deswegen habe ich gleich die Funktion hier gepostet, damit nichts falsches erzähle ) als wird auch ein BOM geschrieben.
Hatte ja auch mit
OLE so funktioniert. Ich habe halt gedacht, das ich beim Word anschubsen, über die WordApplication-Komponente, noch einen Parameter setzen muss.
Gruss