![]() |
AW: Doppeltes Create?
Und wie schaut es nun aus wenn man es kürzer haben will? Man brauch den 2. Aufruf doch nicht wenn man den Ersten wie von mir oben angegeben modifiziert, oder?
|
AW: Doppeltes Create?
Zitat:
Dadurch, dass man den Konstruktor verwendet, kann man gezielt das eigentliche Tree-Objekt erzeugen, und kann somit, strukturiert, die Resourcen belegen, und wieder freigeben. Beispielsweise lassen sich die beiden Bäume so einmalig im OnCreate eines Formulares erzeugen und im OnDestroy wieder freigeben, ohne die sonstigen Möglichkeiten der Klasse zu benutzen. So kann man dann die Bäume mehrfach verwenden. Wie sehen eigentlich die Konstruktoren intern aus. |
AW: Doppeltes Create?
So:
Delphi-Quellcode:
(* Quelle
Rekursive Fassung (geeignet auch zum Ableiten von Suchbäumen etc.) aus: http://www.info-seminar.de/KlassenZA/ Stand: 30.01.2007 Rückfragen und Verbesserungsvorschläge bitte an Joachim Deckers <za-klassen@deckers.name> Bearbeitet entsprechend den "Materialien zu den zentralen Abiturprüfungen im Fach Informatik 2008. Objektorientierter Ansatz Delphi", http://www.standardsicherung.schulministerium.nrw.de/abitur-gost/fach.php?fach=15 Änderungen (16.10.07): (1) addTreeLeft (addTreeRight) wurden ersetzt durch setLeftTree (setRightTree) (2) Die Parameternamen pItem wurden ersetzt durch pObject *) {...} constructor TBintree.create; // leeren Baum erzeugen begin kenntInhalt:=nil; kenntLinkenNachfolger:=nil; kenntRechtenNachfolger:=nil; end; constructor TBintree.create(pObject:TObject); // Baum mit zwei leeren Teilbäumen erzeugen begin kenntInhalt:=pObject; if pObject<>nil then begin kenntLinkenNachfolger:=Klassentyp(self.ClassType).create; kenntRechtenNachfolger:=Klassentyp(self.ClassType).create; end else begin kenntLinkenNachfolger:=nil; kenntRechtenNachfolger:=nil; end end; {...} |
AW: Doppeltes Create?
Deine verkürzte Fassung
Delphi-Quellcode:
müsste auch funktionieren, falls nicht wesentliche Teile aus dem Sourcecode fehlen.
LT := TBintree.Create(TString.create(BlattL));
RT := TBintree.Create(TString.create(BlattR)); Das einzige, was ich in den Konstruktoren vermisse ist ein Aufruf von
Delphi-Quellcode:
zu Beginn.
inherited Create;
Wenn die Klasse von TObject abgeleitet ist, braucht man dass zwar nicht zwingend, da der Konstruktor von TObject leer ist, aber wenn sich das mal ändern sollte, kann man sich Probleme einhandeln. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 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 by Thomas Breitkreuz