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 4 von 5   « Erste     234 5      
Benutzerbild von p80286
p80286

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

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
Delphi-Laie

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

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
 
#33

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
Delphi-Laie

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

AW: liege ich richtig mit dem OOP-Versuch

  Alt 31. Dez 2016, 19:26
Danke, das leuchtet ein.

Nichtdestoweniger interessiere ich mich natürlich auch für Luckies Antwort dazu (vermutlich und hoffentlich im neuen Jahr?!).

Geändert von Delphi-Laie ( 1. Jan 2017 um 09:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

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
Benutzerbild von Luckie
Luckie

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

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
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#37

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 DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#38

AW: liege ich richtig mit dem OOP-Versuch

  Alt 1. Jan 2017, 11:58
Destroy mit großem D schreiben. Das liegt einfach daran, dass Delphi und C++ dieselben Bibliotheken nutzen und C++ case-sensitive ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EdAdvokat

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

AW: liege ich richtig mit dem OOP-Versuch

  Alt 1. Jan 2017, 19:45
Danke, irre, darauf sollte einer kommen!!! Es gibt nun keinen Hinweis mehr!!!
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#40

AW: liege ich richtig mit dem OOP-Versuch

  Alt 1. Jan 2017, 22:59
Zum Glück hat jetzt keiner darauf hingewiesen, dass die Lösung sogar direkt in dem Compiler-Hinweis genannt wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 07:39 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