Ich habe einen Record in meinem Programm:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| type TPlaneten = Record Name:string[20]; X: Word; Y: Word; Z: Byte; Buildlevel: array[0..12] of byte; Solarsats: Word; Temperatur: shortint; Stempelbestand: array[0..2] of Cardinal; HPStempelbestand: array[0..2] of Cardinal; Stempelzeitpunkt: TDateTime; Benutzerprojekte: array[0..11] of Cardinal; Schiffsanzahl: array[0..17] of Word; Verteidigungsanzahl: array[0..9] of Word; Wirtschaftseinstellungen: array[0..5] of Byte; Buildbenachrichtigungen: array[0..13] of boolean; Schiffsbenachrichtigungen: array[0..18] of boolean; Verteidigungsbenachrichtigungen: array[0..10] of boolean; end; TAccount = Record Planet: array[0..12] of TPlaneten; Forschungslevel: array[0..19] of Byte; Forschungsprozente: array[0..19] of Byte; Forschungsbenachrichtigungen: array[0..20] of boolean; Urlaubsrechnerdaten: array[0..70] of Cardinal; Urlaubsrechnerzeiten: array[0..9] of TDateTime; Servershift: TDateTime; Umodestart: TDateTime; end;
var Account:Array[0..10] of TAccount; |
Mit dem Record arbeite ich während der Programmnutzung und beim Beenden wird er über
Streamname.WriteBuffer(Account,SizeOf(Account));
gespeichert und entsprechend geladen.
Wie das halt so ist, wenn man nicht vorrausschauend programmiert, bekommt man irgendwann ein Problem: Ich kann nun das Array of Record nicht mehr als Ganzes laden, sondern muss dir einzelnen Record-Felder per
Streamname.Read(var,SizeOf(var));
auslesen.
Dies funktioniert aber nicht so richtig, da der Record ja nicht
packed ist. Daher hab ich drei Fragen dazu:
1. Gibts 'ne elegante Möglichkeit, einen Nicht-
packed-Record mit Read auszulesen? Mein RF-Alignment ist 8.
2. Lohnt sich
packed immer, auch wenn ständig auf die Daten zugegriffen wird? Ich habe gehört, es soll langsamer sein - gibts da konkrete Messewerte?.
3. Gibt es eine Möglichkeit, den Record
packed zu speichern und damit per
Stream.Read auslesen zu können - ihn jedoch nicht
packed im Speichern zu haben?)
Und sorry für drei Fragen in einem Thread, aber es ist ja dasselbe Thema und gehört zu meinem Record. Da wollte ich nicht dreimal dasselbe posten ...
