![]() |
try..finally
mich würde interessieren, ob es einen unterschied zwischen
Delphi-Quellcode:
und
try
begin anweisung1; anweisung2; end; finally anweisung3;
Delphi-Quellcode:
gibt.
try
anweisung1; anweisung2; finally anweisung3; gruessle |
Re: try..finally
Ich wusste gar nicht, dass begin-end-Anweisungsblöcle bei Ressourcenblöckene erlaubt sind :gruebel:
Das zweite kannst du auf jeden Fall so verwenden, damit hatte ich noch nie Probleme :) Das erste ist wohl eher doppelt gemoppelt ;) |
Re: try..finally
Zitat:
auf jeden fall kam keine compiler-meldung... |
Re: try..finally
Es ist ein try...finally/except...end; - Block. ;)
MfG freak |
Re: try..finally
Zitat:
|
Re: try..finally
Also wenn schon, dann sollte es der Vollständigkeit halber so heißen:
Delphi-Quellcode:
Scheinbar vergessen hier einge, dass ein try.. finally immer mit end; beendet werden muss. :wink:
try
anweisungsblock1;//wird solange ausgeführt, bis ein Fehler auftritt finally anweisungsblock;//wird anschließend ausgeführt end; Achso, zum eigentlichen Thema: der Code zwischen try und finally oder try und except muss nicht noch extra mit begin und end umschlossen werden. MfG Binärbaum |
Re: try..finally
Zitat:
|
Re: try..finally
BEGIN-END kann man überall im Code hinschreiben, wo man Anweisungen hinschreiben kann (und nicht nur da). TRY-Blöcke erfüllen beide Funktionen. Es ist also auch folgendes möglich:
Delphi-Quellcode:
Aus diesem Grund ist es völlig gleich, welche der beiden oben genannten Versionen verwendet werden. Ich wäre für das kürzere.
if a then
try Anw1; Anw2; except Anw3; end; //edit: CODE- durch DELPHI-Tags ersetzt. FAlter |
Re: try..finally
Zitat:
MfG Binärbaum |
Re: try..finally
Zitat:
mfg |
Re: try..finally
[OT]
Stimmt, wenn du es auf ein Papier schreibst, beschwert sich der Compiler auch nicht... Nun ja, ich nutze begin..end nur da, wo ich es brauche, da ich schreibfaul bin, eine Ausnahme ist sowas:
Delphi-Quellcode:
Da weiß weder ich noch Delphi ohne begin..end, welche Variante gemeint ist. (Ich möglicherweise doch wegen dem Einrücken.) Delphi meckert beim Compilieren nicht, aber ob es die Variante nimmt, die ich will?
if a then //wenn a = true
if b then //und b = true Anw1 else //und b = false Anw2; if a then //wenn a = true if b then //und b = true Anw1 else //wenn a = false, egal, was in b Anw2; [/ot] |
Re: try..finally
[OT]
@FAlter: Folgende Variante dürfte dann gemeint sein (unabhängig davon, wie man den Quelltext einrückt):
Delphi-Quellcode:
Für die andere Variante wird begin..end benötigt:
if a then //wenn a = true
if b then //und b = true Anw1 else //und b = false Anw2;
Delphi-Quellcode:
[/OT]
if a then begin//wenn a = true
if b then//und b = true Anw1; end else//wenn a = false Anw2; MfG Binärbaum |
Re: try..finally
[ot]
Wie gesagt, ich nehm immer begin und end in solch einem Fall, da ich sonst möglicherweise selber durcheinanderkomme. In allen anderen Fällen versuch ich möglichst wenig zu schreiben also ohne Begin und end. [/ot] Manchmal mach ich auch sowas:
Delphi-Quellcode:
Vor allem, wenn ich zu faul bin, hochzuscrollen, um mit erstmal 'ne var Buffer: TBitmap anzulegen.with TBitmap.Create do try //... BitBlt(...); //BitBlt von {DieBitmap.}Canvas.Handle auf //self.Canvas.Handle, also von der Kompo oder voms Form finally Free; end; |
Re: try..finally
Hi,
@FAlter/Binärbaum: Alternativ geht's auch so:
Delphi-Quellcode:
cu
if (a) then
if (b) then anw1 else anw2; // im gegensatz zu: if (a) then if (b) then anw1 else else anw2; |
Re: try..finally
[OT] (BEGIN & END).SindGedachtfuer := 'Um mehrere Codezeilen auszuführen!'; [/OT]
Ist ja ein unterschied ob man..
Delphi-Quellcode:
..schreibt, oder..
if x < y then
DOWAS; DOAUCHWAS;
Delphi-Quellcode:
..schreibt, der compilierte Code dürfte denke ich allerdings nicht länger sein!
if x < y then begin
DOWAS; DOAUCHWAS; end; P.s.: Sry 4 Off Topic! |
Re: try..finally
Zitat:
mfg |
Re: try..finally
Die ganzen If-Anweisungen hier haben nichts mit der eigentlichen Problematik, die im 1. Beitrag angesprochen wurde, zu tun. Bitte kommt wieder zurück zum Thema, danke.
|
Re: try..finally
Zitat:
|
Re: try..finally
Zitat:
Ich bevorzuge meinen Code so:
Delphi-Quellcode:
if anything > everything then begin
WriteLn('Na du?'); WriteLn('Heute abend zeit?'); end; // Nach einem Leerzeichen weiter quelltext o. Kommentar und dannach der nexte Quelltext if x > Y then MachNIX; Und stimme mr47 zu, wir sind eigentlich noch beim Thema, den es geht ja um begin und end! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 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