Hallo zusammen,
ich habe folgendes Record:
Delphi-Quellcode:
AWSTRING = record
len: int32_t;
value: WideString;
end;
Nun will ich mit Hilfe eines File-Streams aus einer Datei dieses Record füllen:
Delphi-Quellcode:
function fread_AWSTRING(var destination: AWSTRING; const fs: TFileStream): size_t;
var
temp: uint16_t;
i: integer;
begin
Result := fread_be_int32(destination.len, 1, fs);
if ((destination.len) > 0) then begin
destination.value := StringOfChar(#00, destination.len);
for i := 0 to destination.len - 1 do begin
fread_be_uint16(temp, 1, fs);
destination.value[i+1] := WideChar(temp);
end;
end;
end;
In Zeile 8 schmeißt mir der Debugger aber eine Zugriffsverletzung um die Ohren. Und das ist unabhängig davon, was ich da mache. Jeder Zugriff auf
destination.value schlägt fehl, während der Zugriff auf
destination.len möglich ist. Auch wenn ich Zeile 8 ganz weg lasse, kriege ich bei
destination.value[i+1] := WideChar(temp); eine Zugriffsverletzung (
temp hat mit 101 aber einen korrekten Wert - daran kann es also nicht liegen).
Kann sich das jemand bzw. mir erklären?
Gruß
Christopher
PS: Das analoge Einlesen eines Strings (
destination.value hat da den Typ
String) funktioniert problemlos.