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