![]() |
Re: Kniffliges Problem beim Serialisieren
Nicht lachen jetzt, aber es steht bei mir direkt unter
![]() |
Re: Kniffliges Problem beim Serialisieren
Hmm, bei mir nicht direkt. Also ich meine ich wäre von WriteComponent nicht zu GetChildren gekommen und GetChildren hat auch nur bei TCustomForm eine Beschreibung. Bei TComponent taucht die Methode nichteinmal in der Liste auf.
Zitat:
|
Re: Kniffliges Problem beim Serialisieren
Das sieht doch schon mal gut aus. GetChildren ist auch bei mir unter TComponent zu finden. Ganz klar ist mir die Benutzung aber noch nicht.
Gruß oki |
Re: Kniffliges Problem beim Serialisieren
Also haltet mich für dumm oder so, aber ehrlich gesagt habe ich auch nicht so richtig Ahnung, was ich mit dem Parameter Proc anfangen soll :( Weiß da jemand Bescheid?
|
Re: Kniffliges Problem beim Serialisieren
Hallo,
schau mal:
Delphi-Quellcode:
Wenn du ComponentA in deinem Testprojekt aus der Klasse TDemoComponent erzeugst und einen Haltepunkt in der Methode GetChildren() einbaust, dann wirst du schon sehen.
interface
uses Classes; type TDemoComponent = class(TComponent) procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; end; implementation procedure TDemoComponent.GetChildren(Proc: TGetChildProc; Root: TComponent); var i: Integer; begin for i := 0 to Pred(ComponentCount) do if not Components[i].HasParent then Proc(Components[i]); end; Du solltest aber schon noch ein wenig Zeit in das Studium der Delphi Streaming Funktionalität investieren, denn nur mit der Methode GetChildren() könntest du sonst schon bald ein Opfer des Eisberg-Syndroms werden. Nimm alleine mal die Methode HasParent. Neben Owner (object life cycle) und Parent (visibility) findest du dort ein weiteres Konzept (active or passive streaming). Freundliche Grüße |
Re: Kniffliges Problem beim Serialisieren
Joop,
da waren sie wieder meine drei Probleme. Der Verdacht mit dem Eisberg-Syndroms drängt sich automatisch auf. aber trotzdem der Standard-Spruch: "Jo, jetzt ist das klar." :lol: Ich werd mir diesen thread mal in die Favoriten legen. Zum Glück steh ich momentan nicht vor diesem Problem. Aber sicher bald. Gruß oki |
Re: Kniffliges Problem beim Serialisieren
Ich weine gleich :(
VIelen Dank für eure Hilfe. Das mit dem GetChildren klappt wunderbar. Jetzt tritt aber das nächste Problem auf. Er schreibt nun alle Eigenschaften ordentlich in den Stream. Dann will ich sie wieder lesen und bekomme die Meldung "EReadError - Fehler beim Lesen von Neu5.priceMasterFS: Ungültiger Eigenschaftswert" :( Jetzt sitze ich schon über 2 Tage an diesem sch...önen Speichern/Laden Problem :/ |
Re: Kniffliges Problem beim Serialisieren
Hatte es denn ohne GetChildren geklappt? Vielleicht steckt das Problem ja auch wo anders.
Gruß oki |
Re: Kniffliges Problem beim Serialisieren
Liste der Anhänge anzeigen (Anzahl: 1)
An GetChildren lag es nicht. Das Problem habe ich dadurch gelöst, dass ich in "DefineProperties" eine Anweisung "DefineProperty(...)" hatte, die den gleichen Namen definierte, wie schon im interface Teil eine property hieß.
Ich hatte also eine property priceMasterFS und habe dann in DefineProperties "DefineProperty('priceMasterFS', ...) stehen gehabt. Als ich das durch reinen Zufall auf "DefineProperty('price', ...)" geändert hab, ging es dann. Very strange. Durch die Hilfe oder so wäre ich leider nie darauf gekommen. Jetzt aber doch noch mal zu GetChildren und Co. Das Speichern funktioniert wunderbar (siehe Code unten, das ist die Datei die dabei rauskommt). Aber wenn ich das wieder lade werden die Agenten, die normalerweise dem Agentpool untergeordnet sind direkt dem Formular untergeordnet (obwohl's in der gespeicherten Datei richtig steht). Hab ich da nochwas vergessen? |
Re: Kniffliges Problem beim Serialisieren
Moin,
also wissen tu ich es auch nicht. Mach den Owner doch mal so sichtbar, dass er mit in die Datei aufgenommen wird. Vielleicht wird er dann beim Laden explizit richtig gesetzt. Im Moment sieht das so aus, dass durch getChieldren zwar alle Subcompos beim Speichern berücksichtgt werden, aber beim laden der Owner nicht aus der Tree-hirarchie ermittelt wird. Ich denke ein explizites sichtbar machen des Owners und dessen Laden könnte eventuell das Problem lösen. Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz