AGB  ·  Datenschutz  ·  Impressum  







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

liege ich richtig mit dem OOP-Versuch

Ein Thema von EdAdvokat · begonnen am 29. Dez 2016 · letzter Beitrag vom 2. Jan 2017
Antwort Antwort
Seite 1 von 2  1 2      
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: liege ich richtig mit dem OOP-Versuch

  Alt 30. Dez 2016, 16:59
nur zur Vollständigkeit das kleine Testprog. Flaecheninhalt gemäß den Ratschlägen. Nochmals Danke für die Unterstützung
Angehängte Dateien
Dateityp: zip flaecheninh_test2.zip (52,6 KB, 5x aufgerufen)
Norbert
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.913 Beiträge
 
Delphi 12 Athens
 
#2

AW: liege ich richtig mit dem OOP-Versuch

  Alt 30. Dez 2016, 23:56
So, ich habe die irritierende Benamselung des Destruktors im Tutorial korrigiert.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: liege ich richtig mit dem OOP-Versuch

  Alt 31. Dez 2016, 00:41
Kurz. Den Destructor muss man nur überschreiben, wenn man selber in der Klasse Objekte erstellt, die freigegeben werden müssen. Und dann ruft man ganz zu Anfang im Code vom Destructor inherited auf, um den Destructor der Elternklasse aufzurufen und dann gibt man seinen Kram frei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.913 Beiträge
 
Delphi 12 Athens
 
#4

AW: liege ich richtig mit dem OOP-Versuch

  Alt 31. Dez 2016, 07:27
Hier muss ich Dir widersprechen. Es geht nicht nur um weitere Objekte, die freigegeben werden müssen, sondern um alle Arbeiten, die bei Zerstörung des Objektes ausgeführt werden müssen. Und im Destructor wird das inherited als Letztes aufgerufen.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: liege ich richtig mit dem OOP-Versuch

  Alt 31. Dez 2016, 09:00
Schau mal auf die Uhrzeit, da kann man Constructor und Destructor schon mal verwechseln was die Reihenfolge des inherited angeht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: liege ich richtig mit dem OOP-Versuch

  Alt 1. Jan 2017, 02:20
Schau mal auf die Uhrzeit, da kann man Constructor und Destructor schon mal verwechseln was die Reihenfolge des inherited angeht.
Hehe. Danke für die Ausrede.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: liege ich richtig mit dem OOP-Versuch

  Alt 1. Jan 2017, 11:51
Hallo nochmals eine Frage zum leidigen Thema Destructor:
habe folgenden Code geschrieben im type Tirgendwas:

Delphi-Quellcode:
public
  constructor create;
  destructor destroy; override;
  procedure init;

dann den Destructor aufgerufen mit:

destructor TKredit.destroy;
begin
    inherited destroy;
end;
Ich erhalte dann folgenden Hinweis:
[dcc32 Hinweis] uUnit1.pas(19): H2365 Schreibweise der Überschreiben-Methode TKredit.destroy muss exakt ihrem Vorfahren TObject.Destroy entsprechen
Was muss ich anders machen?
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: liege ich richtig mit dem OOP-Versuch

  Alt 1. Jan 2017, 02:16
Ja. Natürlich. Im Konstruktor zu erst, im Destruktor zuletzt. So rum ist es natürlich richtig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: liege ich richtig mit dem OOP-Versuch

  Alt 31. Dez 2016, 14:55
Kurz. Den Destructor muss man nur überschreiben, wenn man selber in der Klasse Objekte erstellt, die freigegeben werden müssen. Und dann ruft man ganz zu Anfang im Code vom Destructor inherited auf, um den Destructor der Elternklasse aufzurufen und dann gibt man seinen Kram frei.
An welcher Stelle im Destruktor dieses inherited {destroy} korrekt placiert ist, weiß ich bis heute nicht.

Ich tat es bisher am Ende des Destroys, weil in der Delphi-Hilfe (Delphi 3) folgendes Codebeispiel enthalten ist:

Zitat:
Im folgenden Beispiel sehen Sie, wie der im vorhergehenden Abschnitt für die Klasse TShape deklarierte Destruktor implementiert werden kann:
Delphi-Quellcode:
destructor TShape.Destroy;
begin
 FBrush.Free;
 FPen.Free;
 inherited Destroy;
end;
Die letzte Aktion eines Destruktors ist normalerweise der Aufruf des geerbten Destruktors, mit dem die geerbten Felder des Objekts freigegeben werden.
Was stimmt denn nun?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

AW: liege ich richtig mit dem OOP-Versuch

  Alt 31. Dez 2016, 15:29
Ich formuliere es mal so:

Bevor ich mich wegwerfe, schmeiße ich alles weg, was ich verbrochen habe, es könnte sonst sein, dass es mich beim Wegwerfen meiner Schandtaten nicht mehr gibt, obwohl sie zu diesem Zeitpunkt noch auf meine Existenz angewiesen sein könnten.

Daher folge ich dem Beispiel aus der Delphi-Hilfe.

Ein Objekt wird immer erst dann weggeräumt, wenn alles, was von ihm abhängig sein könnte, ordnungsgemäß aufgeräumt wurde.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:46 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