Delphi-PRAXiS

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:

APP 18. Feb 2004 10:10

Re: Wird Variable.Free ausgeführt?
 
Hallo Sakura, interessanter Test
aber :
Zitat:

The GOTO statement cannot jump into or out of an exception handling statement.

sakura 18. Feb 2004 10:23

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

Zitat von APP
Hallo Sakura, interessanter Test
aber :

Schon klar ;-) Das würde Delphi nämlich nicht abfangen können :mrgreen:

...:cat:...

P.S.: Das mit den Löffeln habe ich überhört :evil:

Pseudemys Nelsoni 18. Feb 2004 10:26

Re: Wird Variable.Free ausgeführt?
 
ich les gespannt zu^^

APP 18. Feb 2004 11:04

Re: Wird Variable.Free ausgeführt?
 
Hallo Sakura,
Zitat:

Zitat von sakura
Schon klar ;-) Das würde Delphi nämlich nicht abfangen können :mrgreen:
...:cat:...

das habe ich mir fast gedacht, nachdem DU diese Testfrage gestellt hast :mrgreen:.



p.s. Ich finde diese "Online-Tests" sehr anregend und interessant.

sakura 18. Feb 2004 11:32

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

Zitat von APP
das habe ich mir fast gedacht, nachdem DU diese Testfrage gestellt hast

Ich bin ehrlich. Sicher war ich mir auch nicht - aber ich habe es vorm Posten getestet ;-)

Okay, genug Geschwafel - es war interessant.

...:cat:...


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