![]() |
nach self.Free beenden
Hallo!
Zuerst einmal: Ich habe folgendes Konstrukt (vereinfacht):
Delphi-Quellcode:
So.
TKlasse2=class
procedure Foo2; FKlasse1:TKlasse1; constructor Create(Klasse1:TKlasse1); end; TKlasse1=class FKlasse2:TKlasse2; procedure Foo; procedure DoException; destructor Destroy; override; end; procedure TKlasse2.Foo2; begin FKlasse1.DoException; //irgendwas end; procedure TKlasse1.Create(Klasse1:TKlasse1); begin FKlasse1:=Klasse1; end; procedure TKlasse1.Foo; begin FKlasse2.Foo2; //irgendwas end; procedure TKlasse1.Destroy; begin FKlasse2.Free; inherited; end; procedure TKlasse1.DoException; begin self.Free; end; Hier werden zwar nach DoException die beiden Klassen freigegeben, aber das was bei irgendwas steht, wird danach immer noch ausgeführt. Wie kann ich das verhindern? |
AW: nach self.Free beenden
Zitat:
> eine Exception auslösen. |
AW: nach self.Free beenden
TKlasse1 besitzt diese Eigenschaft nicht.
Delphi-Quellcode:
procedure TKlasse1.Create(Klasse1:TKlasse1);
begin FKlasse1:=Klasse1; end; |
AW: nach self.Free beenden
das sollte bestimmt ein
Delphi-Quellcode:
werden/sein :angle2:
constructor TKlasse2.Create
|
AW: nach self.Free beenden
Vermute ich auch.
Der Sinn erzieht sich mir aber. So etwas würde ich höchstens als "Zweit"-Konstruktor implementieren |
AW: nach self.Free beenden
OK. Der Sinn des ganzen soll sein das ich als Exception einen Text ausgebe (mittels Writeln) und dann das Programm beende.
Es soll keine richtige Exception ausgelöst werden (jedenfalls keine die man in der Konsole sehen kann). Edit: Zitat:
|
AW: nach self.Free beenden
Dann löse trotzdem eine aus und fange sie ausserhalb der Klasse ab ( dort gibst du dann auch das Objekt frei)
|
AW: nach self.Free beenden
Danke. So geht es.
Manchmal sieht man den Wald vor Bäumen nicht :) |
AW: nach self.Free beenden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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