Zitat von
MPirnstill:
Den Typ hatte shmia in der Routine verwendet, welche er mir hier gepostet hatte. Vielleicht ist das ja auch ein Tippfehler und es sollte WideString anstatt WideStream heißen.
Jupp, war ein Tipppfuhler.
Jetzt nochmals den Code (incl. Variante, die den Datentyp WideString umgeht).
Delphi-Quellcode:
procedure SaveWideStringToFile(const filename:string; const ws:WideString);
var
fs : TFileStream;
data : WideString;
begin
data := ' '+ws;
data[1] := Widechar($FEFF); // BOM = Byte Order Mark
fs := TFileStream.Create(filename, fmCreate);
try
fs.WriteBuffer(data[1], Length(data)*sizeof(Widechar));
finally
fs.Free;
end;
end;
procedure SaveWideStringToFileD2(const filename:string; const data:String);
var
fs : TFileStream;
b, buffer : ^Word;
size : Integer;
i : Integer;
begin
size := (Length(data)+1)*2;
GetMem(buffer, size);
try
b := buffer;
b^:= $FEFF; // BOM = Byte Order Mark
Inc(b);
// string kopieren
for i := 1 to Length(data) do
begin
b^ := Ord(data[i]);
Inc(b);
end;
fs := TFileStream.Create(filename, fmCreate);
try
fs.WriteBuffer(buffer^, size);
finally
fs.Free;
end;
finally
FreeMem(buffer);
end;
end;