![]() |
Wenn eine if-bedingung zutrifft dann...
hoi wie kann ich folgendes verbessern?
Delphi-Quellcode:
procedure proc;
var b: boolean; begin if bedingung1 then begin anweisung; b := true; end; if bedingung2 then begin anweisung; b := true; end; if bedingung3 then begin anweisung; b := true; end; if bedingung4 then begin anweisung; b := true; end; if bedingung5 then begin anweisung; b := true; end; if not b then begin // hier gehts normal weiter end; end; wenn irgendeine dieser if abfragen zutrifft dann soll "b" true werden, muss ich das ich jeder abfrage drin haben? oder gibts ein "else" das sich auf ALLE vorigen if anweisungen bezieht? würde ich das "B:= true" nicht überall drin haben müssen, würde meine procedur schon viel kleiner und übersichtlicher werden, ca so:
Delphi-Quellcode:
procedure proc;
var b: boolean; begin if bedingung1 then anweisung; if bedingung2 then anweisung; if bedingung3 then anweisung; if bedingung4 then anweisung; if bedingung5 then anweisung; else b := false // ?? if not b then begin // hier gehts normal weiter end; end; ich könnte mir die ganzen begin..end's sparen jemand ne idee? wäre "else if" ne lösung? |
Re: Wenn eine if-bedingung zutrifft dann...
schon mal mit case-of versucht?
gruss, ims |
Re: Wenn eine if-bedingung zutrifft dann...
Hallo,
es kommt auch auf die Bedingung an. Bei ordinalen genügt auch:
Delphi-Quellcode:
Ansonsten vielleicht so:
case Bedingung of
1..5: //irgendwas 6: Result := True; else //irgenwas anderes end;
Delphi-Quellcode:
Gruß
if Bedingung1 then else
if Bedingung2 then else ... if Bedingung7 then else b := True; s14 |
Re: Wenn eine if-bedingung zutrifft dann...
case funktioniert nicht, da es sich um strings handelt
|
Re: Wenn eine if-bedingung zutrifft dann...
Dann bleibt wohl nur meine zweite Variante
Delphi-Quellcode:
if 'bla1' then Anweisung else
if 'bla2' then Anweisung else if 'bla3' then Anweisung else if 'bla4' then Anweisung else // irgendwas anderes |
Re: Wenn eine if-bedingung zutrifft dann...
Das Problem mit strings und case wurde schon häufiger diskutiert,
![]() Wenn Du komplexere Abfragen gestalten möchtest und sie kein Performaceproblem darstellen oder "spätere" Abfragen nur dann Ausgeführt werden sollen, wenn vorherige fehlschlagen, sollte eine Lösung in dieser Art geeignet sein:
Delphi-Quellcode:
function BooleanSwitch(const ABooleanArray: array of Boolean): Integer;
begin Result:= High(ABooleanArray); while (Result>=Low(ABooleanArray)) and not ABooleanArray[Result] do Dec(Result); end; procedure TForm1.Button1Click(Sender: TObject); begin case BooleanSwitch([ Sender=Button1, Sender=Form1, Sender=nil]) of 0: DoSthButton1; 1: DoSthForm1; 2: DoSthNil else DoSthElse; end; end; |
Re: Wenn eine if-bedingung zutrifft dann...
Zitat:
Code:
Roderich
if bedingung1 or bedingung2 or bedingung3 or bedingung4 or bedingung5 then
anweisung else wasanderes; |
Re: Wenn eine if-bedingung zutrifft dann...
die anweisung nach der bedingung ist immer eine andere
|
Re: Wenn eine if-bedingung zutrifft dann...
Konnte Dein Problem mit den hier dargestellten Ansätzen gelöst werden?
|
Re: Wenn eine if-bedingung zutrifft dann...
Delphi-Quellcode:
If Bedingung1 Then Begin
Anweisung; End Else If bedingung2 Then Begin Anweisung; End Else If bedingung3 Then Begin Anweisung; End Else If bedingung4 Then Begin Anweisung; End Else If bedingung5 Then Begin Anweisung; End Else Begin // hier gehts normal weiter End;
Delphi-Quellcode:
If Bedingung1 Then Anweisung
Else If bedingung2 Then Anweisung Else If bedingung3 Then Anweisung Else If bedingung4 Then Anweisung Else If bedingung5 Then Anweisung Else Begin // hier gehts normal weiter End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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