Thema: Delphi Frage zu record

Einzelnen Beitrag anzeigen

Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#10

AW: Frage zu record

  Alt 10. Aug 2012, 11:25
Ich würde das nicht tun!
Denn packed records packen manchmal eben nicht so, wie man sich das denkt. Irgendwann (Arrays mit ungerader Länge) wird doch auf das nächst gerade Byte ausgerichtet und -wupps- hat man den Salat.

Lies die Daten lieber explizit über einen Stream Wert für Wert ein: Das geht so schnell, das merkst Du nicht. Spendiere also deinem Record eine Leseroutine
Delphi-Quellcode:
Type
   TKUIndexDaten = record
      Len :Word;
      Erased :Byte;
      Procedure LoadFromStream (stream : TStream);
   end;

Procedure TKUIndexDaten.LoadFromStream (stream : TStream);
begin
// Hier werden garantiert immer 3 Bytes gelesen (solange Word=2 Byte und Byte=1 Byte lang ist)
  stream.Read (Len, SizeOf(Len));
  stream.Read (Erased, SizeOf(Erased ));
End;
Um nun ein viele Records einzulesen rufst Du für jedes Element einfach die LoadFromStream-Methode auf.
  Mit Zitat antworten Zitat