AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

nach self.Free beenden

Ein Thema von Teekeks · begonnen am 6. Aug 2010 · letzter Beitrag vom 7. Aug 2010
Antwort Antwort
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

nach self.Free beenden

  Alt 6. Aug 2010, 20:18
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?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: nach self.Free beenden

  Alt 6. Aug 2010, 21:13
Wie kann ich das verhindern?
Indem du das machst, was du da angeblich machen willst?
> eine Exception auslösen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: nach self.Free beenden

  Alt 6. Aug 2010, 21:16
TKlasse1 besitzt diese Eigenschaft nicht.
Delphi-Quellcode:
procedure TKlasse1.Create(Klasse1:TKlasse1);
begin
  FKlasse1:=Klasse1;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: nach self.Free beenden

  Alt 6. Aug 2010, 21:20
das sollte bestimmt ein constructor TKlasse2.Create werden/sein
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: nach self.Free beenden

  Alt 6. Aug 2010, 21:25
Vermute ich auch.
Der Sinn erzieht sich mir aber. So etwas würde ich höchstens als "Zweit"-Konstruktor implementieren
Markus Kinzler
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#6

AW: nach self.Free beenden

  Alt 6. Aug 2010, 22:38
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:
das sollte bestimmt ein constructor TKlasse2.Create werden/sein
Richtig
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: nach self.Free beenden

  Alt 6. Aug 2010, 22:42
Dann löse trotzdem eine aus und fange sie ausserhalb der Klasse ab ( dort gibst du dann auch das Objekt frei)
Markus Kinzler
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

AW: nach self.Free beenden

  Alt 6. Aug 2010, 23:10
Danke. So geht es.
Manchmal sieht man den Wald vor Bäumen nicht
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: nach self.Free beenden

  Alt 7. Aug 2010, 18:09
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]
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:27 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