Stream.Read/.Write sind doch bei dir so definiert?
Delphi-Quellcode:
Read(var Buffer; Count: Longint): Longint;
Write(const Buffer; Count: Longint): Longint;
Also dann sollte es doch funktionieren?
Hast du mal ein Testprogramm zur Verfügung?
Jedenfalls zu Chemiker's Vorschlag:
strLaenge = maximale StringLänge (mehr geht dann nicht rein und soviel wird auch immer gespeichert, selbt wenn weniger drin ist)
Delphi-Quellcode:
// Schreiben
Len := Length(T);
Stream.Write(Len, SizeOf(Len));
for i := 0 to Length(T) - 1 do
Stream.Write(T[i], SizeOf(TDatum));
// Lesen
Stream.Read(Len, SizeOf(Len));
SetLength(T, Len);
for i := 0 to Length(T) - 1 do
Stream.Read(T[i], SizeOf(TDatum));
Bei 'nen packed Array (ebenfalls mit ShortStrings) müßte es auch so gehn:
Delphi-Quellcode:
// Schreiben
Len := Length(T);
Stream.Write(Len, SizeOf(Len));
Stream.Write(T[0], SizeOf(TDatum) * Length(T));
// Lesen
Stream.Read(Len, SizeOf(Len));
SetLength(T, Len);
Stream.Read(T[0], SizeOf(TDatum) * Length(T));