Hallo,
das Problem liegt wohl nicht in den
fread_*-Methoden. Greife ich nämlich noch vor dem Lesen auf die Eigenschaft zu:
Delphi-Quellcode:
function read_generic_data_header(
var data_header: generic_data_header; fs: TFileStream): integer;
begin
fread_ASTRING(data_header.data_type_id, fs);
fread_ASTRING(data_header.unique_file_id, fs);
fread_AWSTRING(data_header.date_time, fs);
// Hier wird nix gelesen, da die Länge = 0 ist
data_header.locale.value := '
-----';
// <--- hier kommt die Exception
fread_AWSTRING(data_header.locale, fs);
Result := 1;
end;
Erhalte ich schon dort eine
EOutOfMemory-
Exception.
Noch mal die Typ-Definitionen:
Delphi-Quellcode:
type
// C-Typedefs
int8_t = Shortint;
uint8_t = Byte;
int16_t = Smallint;
uint16_t = Word;
int32_t = integer;
uint32_t = longword;
float32_t = Single;
uchar = uint8_t;
AWSTRING = record
len: int32_t;
value: WideString;
end;
generic_data_header = record
data_type_id: ASTRING;
unique_file_id: ASTRING;
date_time: AWSTRING;
locale: AWSTRING;
n_name_type_value: int32_t;
name_type_value: array of nvt_triplet;
n_parent_headers: array of Pointer;
end;
Irgendwelche Vorschläge?
Gruß
Christopher
PS: Ich weiß im Moment nicht, wie ich ein Beispielprogramm bereit stellen sollen, da ich die Datei, aus der gelesen werden soll, nicht veröffentlichen kann.