Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Goto in andere Procedure...oder gibts ne Alternative? (https://www.delphipraxis.net/52394-goto-andere-procedure-oder-gibts-ne-alternative.html)

Flocke 29. Aug 2005 15:05

Re: Goto in andere Procedure...oder gibts ne Alternative?
 
Zitat:

Zitat von marabu
Hoffentlich schaut wenigstens Flocke mal in die Online-Hilfe - Assert (Prozedur) ...

Sicher tu ich das 8)
1. was löst eine fehlgeschlagene Assertion aus? Eine Exception vom Typ EAssertionFailed!
2. Assertions taugen nur zum Debuggen, da man mit einem Compilerschalter ganz einfach alle komplett deaktivieren kann.

Zitat:

Zitat von glkgereon
Meine Onlinehilfe (D2k5) kennt Assert nicht.

Meine auch nicht!

Zitat:

Zitat von tommie-lie
die sauberste Möglichkeit, auf so einen Fehler zu reagieren.

Meiner Meinung nach nicht. Die "sauberste" Möglichkeit wäre (in meinen Augen), aus den booleschen Funktionen Prozeduren zu machen, die im Falle eines Fehlers direkt eine Exception auslösen. Der Rumpf sähe dann so aus:

Delphi-Quellcode:
Init;
WriteLn('Init OK');
FileInit;
WriteLn('FileInit OK');
Analyse;
WriteLn('Analyse OK');
FileUnInit;
WriteLn('FileUnInit OK');
UnInit;
WriteLn('UnInit OK');
... und im Falle eines Fehlers die Exception einfach durchschlagen lassen (oder halt diesen Block mit try..except umranden und eine "schöne" Fehlermeldung ausgeben).

malo 29. Aug 2005 15:08

Re: Goto in andere Procedure...oder gibts ne Alternative?
 
Was hindert dich daran, eine boolsche Variable zu erstellen, und die abzufragen?

Delphi-Quellcode:
label Ende; //SprungMarke

var bEnde: boolean = false;

procedure Output(Error: Boolean; Value: String);
begin
  if Error then
    begin
    WriteLn(Value+'Fehler');
    bEnde := true;
    end
  else WriteLn(Value+'OK');
end;

begin

OutPut(Init,'Init...');
if not (bEnde) then OutPut(FileInit,'FileInit...') else goto Ende; //oder exit;
if not (bEnde) then OutPut(Analyse,'Analyse...') else goto Ende;
if not (bEnde) then OutPut(FileUnInit,'FileUnInit...') else goto Ende;
if not (bEnde) then OutPut(UnInit,'UnInit...') else goto Ende;

Ende: ;
end.
So ungefähr hätte ich das jetzt prinzipiell gemacht.

Ist imho die Variante, wo man am wenigsten für nachdenken muss :mrgreen:

Auch, wenn die Exception-Möglichkeit schick ist, und weniger Aufwand bedeutet :)


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

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