Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wird Variable.Free ausgeführt? (https://www.delphipraxis.net/16502-wird-variable-free-ausgefuehrt.html)

Pseudemys Nelsoni 18. Feb 2004 08:23


Wird Variable.Free ausgeführt?
 
Hallo, mal ne frage,

sagen wir mal mein Code sieht so aus:

Delphi-Quellcode:
procedure2;
begin
  // hier tritt ein fehler auf
end;

procedure1;
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  procedure2;
  sl.free;
end;


wird das sl.free noch ausgeführt wenn in procedure2 ein fehler auftrat?

MikeS 18. Feb 2004 08:27

Re: Wird Variable.Free ausgeführt?
 
ich denke nicht!

Aber dazu gibt es doch try finally Blöcke! :wink:

Pseudemys Nelsoni 18. Feb 2004 08:58

Re: Wird Variable.Free ausgeführt?
 
danke für den tip :) ich hätte aber gern ne ja/nein antwort :mrgreen:

btw, ich kenne try finally schon, aber würde trotzdem gern wissen wies bei meinem beispiel oben aussehen würde, also obs frei werden würde oder nicht

mfg

sakura 18. Feb 2004 09:42

Re: Wird Variable.Free ausgeführt?
 
Zitat:

Zitat von Pseudemys Nelsoni
ich hätte aber gern ne ja/nein antwort

Die kann Dir keiner geben. (falls der Fehler fehlerhafterweise doch nicht auftritt) ;-)

Wenn in procedure2 eine Exception auftritt, dann NEIN, wenn beim Erstellen der StringListe eine Exception auftritt (z.B. Speicher voll) dann NEIN, wenn keine Expceptions auftreten (weder beim Create noch in procedure2) dann JA.

...:cat:...

P.S.: Sollte die Excpetion in Procedure2 intern durch einen try...except...end Block gefangen werden, dann wiederum JA.

Pseudemys Nelsoni 18. Feb 2004 09:45

Re: Wird Variable.Free ausgeführt?
 
das wollte ich wissen, DANKE :mrgreen:

Jens Schumann 18. Feb 2004 09:58

Re: Wird Variable.Free ausgeführt?
 
Hallo,
an dieser Stelle ein kleiner Quiz:
Delphi-Quellcode:
var
  SL : TStringList;
begin
  SL:=TStringList.Create;
  Try
    If MyFunction then
      Exit;
    ...
  Finally
    SL.Free;
    end;
end;
Wird SL.Free ausgeführt, wenn MyFunction True zurückgibt ?

sakura 18. Feb 2004 09:59

Re: Wird Variable.Free ausgeführt?
 
Zitat:

Zitat von Jens Schumann
Wird SL.Free ausgeführt, wenn MyFunction True zurückgibt ?

Ja ;-)

...:cat:...

Jens Schumann 18. Feb 2004 10:01

Re: Wird Variable.Free ausgeführt?
 
Hallo sakura,
damit liegst Du vollkommen richtig.

sakura 18. Feb 2004 10:06

Re: Wird Variable.Free ausgeführt?
 
Und was passiert hier ;-)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
label
  Hmmmm;
begin
  try
    goto Hmmmm;
  finally
    ShowMessage('2b | !2b');
  end;
Hmmmm:
end;
...:cat:...

P.S.: Sorry Pseudo..., aber so lernst Du ja auch was ;-)

Tyrael Y. 18. Feb 2004 10:09

Re: Wird Variable.Free ausgeführt?
 
@Sakura ..ist doch klar was da passiert..

du kriegst paar hinter die Löffeln, weil du GOTO benutzt hast und das nicht geschickter geschrieben hast :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Seite 1 von 2  1 2      

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