![]() |
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:
erstellen muss
var
Blub:TBlub; begin Blub := TBlub.create; ... schreib ich in die Proceduren usw. einfach noch die zeile:
Delphi-Quellcode:
läuft auch prima soweit
if not assigned(self) then self.create;
nur gibts ne Zugrifsverletzung wenn ich das Programm beende... Hat jemand n Plan woran das liegen könnte? Greetz Boombuler |
Re: Selbstersteller Typ, Fehler beim Beenden des Programms
Wie und wo gibst du deine Klasse wieder frei?
|
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 |
Re: Selbstersteller Typ, Fehler beim Beenden des Programms
Zitat:
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 ;) ... |
Re: Selbstersteller Typ, Fehler beim Beenden des Programms
Stimmt auffallend!
Gibt es überhaupt einen weg das zu umgehen? |
Re: Selbstersteller Typ, Fehler beim Beenden des Programms
Nö, und eigentlich gehört dieses Verhalten zu den Kern-Konzepten der OOP ;)
|
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.
|
Re: Selbstersteller Typ, Fehler beim Beenden des Programms
Zitat:
Greetz Boombuler |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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