[Delphi] Properties Kopieren/Speichern

Hallo !

Ich möchte die Eigenschaften verschiedener (nicht notwenidigerweise bekannter) Objekte speichern und später wieder laden. Als Beispiel möchte ich mal ein TPen-Objekt nehmen, welches mind. Farbe, Dicke, Stil und Modus speichern sollte. Ich dachte, man könne direkt den Datenbereich des Objekts „en bloc“ speichern. Zum ersten test habe ich versucht, diesen Datenblock einfach nur zu kopieren mit

Pen1 := TPen.Create;
Pen2 := TPen.Create;
Pen1.color := clRed;
Pen1.width := 1;
Pen1.style := psDot;
CopyMemory(Pen2,Pen1,Pen1.InstanceSize);
Canvas.Pen.Assign(Pen2);
Canvas.Ellipse(0,0,width,height);

Wunderbarerweise funktioniert das !

Also habe ich weitergemacht:

AssignFile(F,‚Test.dat‘);
Rewrite(F,1);
BlockWrite(F,Pen1,Pen1.InstanceSize);
CloseFile(F);

AssignFile(F,‚Test.dat‘);
Reset(F,1);
BlockRead(F,Pen2,Pen2.InstanceSize);
CloseFile(F);

Canvas.Pen.Assign(Pen2);
Canvas.Ellipse(0,0,width,height);

Und eben das gibt Schutzverletzungen, wobe mein Debugger mir leider keinen Hinweis gibt, wo genau das passiert (Blockread geht noch, im Einzelschrittmodus auch Assign und Ellipse), womöglich erst beim updaten des Canvas, was ich nicht debuggen kann.

Was mach ich falsch, wie kann ich’s lösen ?

Gruß
Jochen

BlockWrite(F,Pen1,Pen1.InstanceSize);

Ich glaube, das darfst du gar nicht machen, weil das Deteiformat garantiert anders ist, als das Speicherformat.

Untypisiert
F hat den Typ FILE.
Also untypisiert, die recordgröße ist 1 Byte und ich schreibe einfach eine Reihe Bytes und ich lese diese Reihe wieder. Prinzipiell geht das, das hab ich schon mit anderen Sachen ausprobiert.

Jochen