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 Wenn eine if-bedingung zutrifft dann... (https://www.delphipraxis.net/13614-wenn-eine-if-bedingung-zutrifft-dann.html)

Pseudemys Nelsoni 22. Dez 2003 14:45


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?

ims 22. Dez 2003 14:52

Re: Wenn eine if-bedingung zutrifft dann...
 
schon mal mit case-of versucht?

gruss, ims

s14 22. Dez 2003 14:52

Re: Wenn eine if-bedingung zutrifft dann...
 
Hallo,
es kommt auch auf die Bedingung an. Bei ordinalen genügt auch:

Delphi-Quellcode:
case Bedingung of
  1..5: //irgendwas
  6: Result := True;
  else //irgenwas anderes
end;
Ansonsten vielleicht so:
Delphi-Quellcode:
if Bedingung1 then else
if Bedingung2 then else
...
if Bedingung7 then else b := True;
Gruß
s14

Pseudemys Nelsoni 22. Dez 2003 14:57

Re: Wenn eine if-bedingung zutrifft dann...
 
case funktioniert nicht, da es sich um strings handelt

s14 22. Dez 2003 15:08

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

choose 22. Dez 2003 15:09

Re: Wenn eine if-bedingung zutrifft dann...
 
Das Problem mit strings und case wurde schon häufiger diskutiert, zb hier.

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;

roderich 22. Dez 2003 15:56

Re: Wenn eine if-bedingung zutrifft dann...
 
Zitat:

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;
wenn anweisung immer die gleiche ist, dann mach doch einfach
Code:
  if bedingung1 or bedingung2 or bedingung3 or bedingung4 or bedingung5 then
    anweisung
  else
    wasanderes;
Roderich

Pseudemys Nelsoni 22. Dez 2003 17:00

Re: Wenn eine if-bedingung zutrifft dann...
 
die anweisung nach der bedingung ist immer eine andere

choose 22. Dez 2003 17:26

Re: Wenn eine if-bedingung zutrifft dann...
 
Konnte Dein Problem mit den hier dargestellten Ansätzen gelöst werden?

himitsu 22. Dez 2003 17:30

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.
Seite 1 von 2  1 2      

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