Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
20. Sep 2004
Einmal hast du nur entries anstelle von cl.entries geschrieben. Und die beiden anderen Fehler rühren wohl daher, dass der Compiler es nicht schnallt, dass ein dyn. Array ein Zeiger ist. Versuch also noch den Cast auf Pointer:
f.WriteBuffer(Pointer(cl.entries)^, Length(cl.entries) * Sizeof(CurrListEntry));
Analog beim Lesen.
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
16. Sep 2004
rec.Count gibt die Länge des Arrays an, ist also vor dem Schreiben identisch mit Length(Array). Ich benutz das nur, damit ich später beim Einlesen die Länge des Arrays weiß, denn die brauch ich ja. Den Code fürs Einlesen schreib ich dir jetzt, hatte vorhin keine Zeit mehr.
type
TMyRec = record
Data1: Integer;
Count: Integer;
Vals: Array of Integer;
end;
var
fs:...
Forum: Object-Pascal / Delphi-Language
Delphi
by Chewie,
16. Sep 2004
Mal langsam hier, Leute. Erstens richtet packed in der Standardeinstellung an 4 Byte- und nicht an 8 Byte-Grenzen aus und zweitens hat das hier mit dem Problem nichts zu tun.
Das Problem ist vielmehr, dass dynamische Array- und lange String-Variablen (auch Recordfelder) Zeiger auf den dafür allokierten Heap-Speicher sind, das Array bzw. der String ist also nicht direkt im Record enthalten. Um...