Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Zugriff auf Record-Eigenschaft nicht möglich

  Alt 15. Mai 2009, 10:15
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.
  Mit Zitat antworten Zitat