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.