Delphi-Quellcode:
hStream.WriteBuffer(Daten, hSize);
hStream.Position := 0;
Setze mal den Positionszeiger wieder auf den Anfang des Streams.
[add]
Aber das Scheiben der Daten ist definiv auch noch falsch, denn du scheibst nur den Array-Pointer in den Stream.
Hast du dich denn noch nicht gewundert, daß immer nur 4 Byte im Stream laden, egal wieviele Daten in dem Array drin sind?
Delphi-Quellcode:
hStream.WriteBuffer(Daten[0], Length(Daten) * SizeOf(TDatensatz));
// oder
hStream.WriteBuffer(Daten[0], Length(Daten) * SizeOf(Daten[0]));