Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FreePascal nach self.Free beenden (https://www.delphipraxis.net/153535-nach-self-free-beenden.html)

Teekeks 6. Aug 2010 19:18

nach self.Free beenden
 
Hallo!
Zuerst einmal:
Ich habe folgendes Konstrukt (vereinfacht):
Delphi-Quellcode:
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;
So.
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?

himitsu 6. Aug 2010 20:13

AW: nach self.Free beenden
 
Zitat:

Zitat von Teekeks (Beitrag 1040084)
Wie kann ich das verhindern?

Indem du das machst, was du da angeblich machen willst?
> eine Exception auslösen.

mkinzler 6. Aug 2010 20:16

AW: nach self.Free beenden
 
TKlasse1 besitzt diese Eigenschaft nicht.
Delphi-Quellcode:
procedure TKlasse1.Create(Klasse1:TKlasse1);
begin
  FKlasse1:=Klasse1;
end;

himitsu 6. Aug 2010 20:20

AW: nach self.Free beenden
 
das sollte bestimmt ein
Delphi-Quellcode:
constructor TKlasse2.Create
werden/sein :angle2:

mkinzler 6. Aug 2010 20:25

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

Teekeks 6. Aug 2010 21:38

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:

Zitat von himitsu (Beitrag 1040091)
das sollte bestimmt ein
Delphi-Quellcode:
constructor TKlasse2.Create
werden/sein :angle2:

Richtig :)

mkinzler 6. Aug 2010 21:42

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)

Teekeks 6. Aug 2010 22:10

AW: nach self.Free beenden
 
Danke. So geht es.
Manchmal sieht man den Wald vor Bäumen nicht :)

freak4fun 7. Aug 2010 17:09

AW: nach self.Free beenden
 
Zitat:

Zitat von Teekeks (Beitrag 1040104)
Danke. So geht es.
Manchmal sieht man den Wald vor Bäumen nicht :)

[OT]Hier in der DP werden dann alle Bäume gerodet, bis auf den, den man sucht. xD[/OT]


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