AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Doppeltes Create?

Ein Thema von internetnavigator · begonnen am 7. Jun 2010 · letzter Beitrag vom 7. Jun 2010
Antwort Antwort
Seite 2 von 2     12   
internetnavigator

Registriert seit: 13. Mai 2006
94 Beiträge
 
RAD-Studio 2010 Arc
 
#11

AW: Doppeltes Create?

  Alt 7. Jun 2010, 20:27
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?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Doppeltes Create?

  Alt 7. Jun 2010, 21:07
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?
Jain.
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
internetnavigator

Registriert seit: 13. Mai 2006
94 Beiträge
 
RAD-Studio 2010 Arc
 
#13

AW: Doppeltes Create?

  Alt 7. Jun 2010, 21:13
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;
{...}

Geändert von mkinzler ( 7. Jun 2010 um 21:18 Uhr) Grund: Delphi Formatierung aktiviert: Für delphi Quellcode bitte [Code=Delphi] verwenden
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Doppeltes Create?

  Alt 7. Jun 2010, 21:36
Deine verkürzte Fassung

Delphi-Quellcode:
    LT := TBintree.Create(TString.create(BlattL));
    RT := TBintree.Create(TString.create(BlattR));
müsste auch funktionieren, falls nicht wesentliche Teile aus dem Sourcecode fehlen.

Das einzige, was ich in den Konstruktoren vermisse ist ein Aufruf von

inherited Create; zu Beginn.

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz