Hallo,
Zitat von
himitsu:
SetLength(destination.value, destination.len);
wie gesagt: Es ist unabhängig davon, was ich in Zeile 8 mache. Habe
SetLength schon probiert und führt zum gleichen Fehler.
Zitat von
mkinzler:
Da WideString nicht finalisierbar istr steht bei Value nur ein Zeiger. du müsstest mit einer Hilfsvariablen arbeiten
Ganz so einfach scheint das aber auch nicht zu gehen.
Delphi-Quellcode:
function fread_AWSTRING(var destination: AWSTRING; const fs: TFileStream): size_t;
var
temp: uint16_t;
i: integer;
temps: WideString;
begin
Result := fread_be_int32(destination.len, 1, fs);
if ((destination.len) > 0) then begin
SetLength(temps, destination.len);
for i := 0 to destination.len - 1 do begin
fread_be_uint16(temp, 1, fs);
temps[i+1] := WideChar(temp);
end;
destination.value := temps;
end;
end;
Da fliegt mit in der letzten Zeile eine
EOutOfMemory-
Exception um die Ohren.
Gruß
Christopher