Delphi3: typisierte Dateien

Hallo,

Ich habe meine Klasse TEntry, die 6 Integer, einen String und viele Boolsche Variablen enthält. Beim Schreiben in eine Datei vom Typ file of TEntry werden nur 4 Character geschrieben. Das Schreiben zweier gleicher Instanzen vom Typ TEntry sollte zwei gleiche Bitfolgen in die datei schreiben. Dem ist aber nicht so. Beim Lesen kommt dementsprechnd Müll raus. Weiss jemand woran sowas liegen kann?

Chris

Hallo,

Ohne Codeschnipsel gibts da nicht viel zu helfen!

Ich habe meine Klasse TEntry,

du meinst einen Record und keine Klasse, oder?
Oder hast du TEntry als „CLASS“ definiert. Dann würde nur der Pointer auf das Objekt geschrieben und der ist 4 Byte lang.

Also bitte als „RECORD“ definieren.

Gruss, Niels

Hallo Niels,
hmm… ich dachte man kann auch Klassen speichern. Dann werd ich in meiner Klasse alle Membervariablen in ein Record packen. Meine Klasse an sich ist schon überirdisch gross geworden…
Danke!
Chris

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Dann werd
ich in meiner Klasse alle Membervariablen in ein Record
packen. Meine Klasse an sich ist schon überirdisch gross
geworden…

du musst aber in jedem Fall aufpassen, wenn du in deinem Record Strings variabler Länge verwendest. Dann steht in diesem Record nur ein verweis auf den String und nicht der String selber! Vermutlich wird dann auch nur dieser Verweis geschrieben.

Um deine Klasse zu sichern, kannst du evtl die Methode TStream.writeBuffer verwenden. Da gilt dann aber vermutlich das gleiche Problem mit variablen Strings. Ist deine Klasse ein Nachfahre von TComponent, so kannst du TStream.WriteComponent verwenden.

Gruss, Niels