Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Selbstersteller Typ, Fehler beim Beenden des Programms (https://www.delphipraxis.net/37920-selbstersteller-typ-fehler-beim-beenden-des-programms.html)

Boombuler 12. Jan 2005 10:34


Selbstersteller Typ, Fehler beim Beenden des Programms
 
Hi Leutz

ich schreib gerad an nem Typen (abgeleitet von TObject).
nun hab ich mir gedacht, wenn ich nich immer vorher den Typen mit
Delphi-Quellcode:
var
 Blub:TBlub;
begin
 Blub := TBlub.create;
...
erstellen muss
schreib ich in die Proceduren usw. einfach noch die zeile:
Delphi-Quellcode:
if not assigned(self) then self.create;
läuft auch prima soweit
nur gibts ne Zugrifsverletzung wenn ich das Programm beende...

Hat jemand n Plan woran das liegen könnte?

Greetz
Boombuler

Luckie 12. Jan 2005 10:35

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Wie und wo gibst du deine Klasse wieder frei?

Boombuler 12. Jan 2005 10:54

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Wie: ich geb die mit .Free wieder frei (bzw. FreeandNil hab beides probiert)
Wo: nachdem ich die benutzt habe

Greetz
Boombuler

Robert_G 12. Jan 2005 10:59

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Zitat:

Zitat von Boombuler
schreib ich in die Proceduren usw. einfach noch die zeile:
Delphi-Quellcode:
if not assigned(self) then self.create;
läuft auch prima soweit

Wie soll denn das gehen?
Self ist doch bereits der Zeiger auf die Instanz. Ein Self.Create() sollte nicht funktionieren können, da du ja nur von einem Typen eine Instanz erzeugen kannst.
Delphi-Quellcode:
var
  Blub, NochEinBlub :TBlub;
begin
  Blub := TBlub.Create(); // geht
  NochEinBlub := Blub.Create() // kann natürlich nicht gehen ;)
  ...

Boombuler 12. Jan 2005 11:08

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Stimmt auffallend!

Gibt es überhaupt einen weg das zu umgehen?

dizzy 12. Jan 2005 11:34

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Nö, und eigentlich gehört dieses Verhalten zu den Kern-Konzepten der OOP ;)

Luckie 12. Jan 2005 11:36

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Ich habe deswegen gefragt, wenn du im OnClose Self.Free aufrufst, dann gibst du das Formular frei und dann kracht es, weil die VCL beim beenden automatisch die Form freigibt.

Boombuler 12. Jan 2005 11:53

Re: Selbstersteller Typ, Fehler beim Beenden des Programms
 
Zitat:

Zitat von dizzy
Nö, und eigentlich gehört dieses Verhalten zu den Kern-Konzepten der OOP ;)

Schei* OOP ;)

Greetz
Boombuler


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 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