Zitat von
DGL-luke:
öhm.... ich muss das im konstruktor erstellen?! ich dachte, der zweck vom deserialisieren ist, dass mans eben nicht erstellt....
Ich hab schon oben mal angedeutet, dass beim Deserialisieren nur folgendes passiert:
- Der entsprechende Konstruktor wird aufgerufen
- die published Properties werden einzeln aus der Datei geparst und per
RTTI dem gerade erstellten Objekt zugewiesen.
Was aber passiert, wenn das Unterobjekt(dein Control) nicht im Konstruktor erstellt wird? Richtig es gibt ne
exception, weil kein weiterer Konstruktor mehr aufgerufen wird. Warum is das aber so? Angenommen es würde wirklich der Konstruktor des Unterobjekts aufgerufen werden. Dann wird dieses neu erstellt. Angenommen du hast sowas im Konstruktor deiner manager-Klasse:
Delphi-Quellcode:
constructor TButtonManager.Create;
begin
inherited Create;
FButton := TButton.Create;
AndererPointer := FButton;
...
end;
Und dann such mal den Fehler, wenn du dich wunderst, dass es beim Zugriff auf AndererPointer ne
AV gibt...
Zitat:
Aber nach
DFM sieht das nicht aus
Code:
‘ TPF0
TFormPanel Control.Left¨ Control.Topš
Control.WidthControl.HeightControl.TabOrder LeftPx¨ TopPxš HeightPxWidthPx
Sieht für mich nach ner Binär-
DFM aus. Da gibts 2 Möglichkeiten: a) au öffnest die Datei mit nem Editor der das lesen kann(z.B. Delphi) oder b) du serialisierst in Text-DFMs:
ObjectBinaryToText. Wenn du n funktionierendes Beispiel brauchst:
TOptions
mfg
Christian