AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wenn eine if-bedingung zutrifft dann...
Thema durchsuchen
Ansicht
Themen-Optionen

Wenn eine if-bedingung zutrifft dann...

Ein Thema von Pseudemys Nelsoni · begonnen am 22. Dez 2003 · letzter Beitrag vom 22. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Wenn eine if-bedingung zutrifft dann...

  Alt 22. Dez 2003, 15:45
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
ims

Registriert seit: 23. Jul 2003
Ort: Sirnach
157 Beiträge
 
Delphi 7 Professional
 
#2

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

  Alt 22. Dez 2003, 15:52
schon mal mit case-of versucht?

gruss, ims
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#3

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

  Alt 22. Dez 2003, 15:52
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
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

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

  Alt 22. Dez 2003, 15:57
case funktioniert nicht, da es sich um strings handelt
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#5

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

  Alt 22. Dez 2003, 16:08
Dann bleibt wohl nur meine zweite Variante

Delphi-Quellcode:
if 'bla1then Anweisung else
if 'bla2then Anweisung else
if 'bla3then Anweisung else
if 'bla4then Anweisung else // irgendwas anderes
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#6

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

  Alt 22. Dez 2003, 16:09
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;
gruß, choose
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#7

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

  Alt 22. Dez 2003, 16:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

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

  Alt 22. Dez 2003, 18:00
die anweisung nach der bedingung ist immer eine andere
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#9

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

  Alt 22. Dez 2003, 18:26
Konnte Dein Problem mit den hier dargestellten Ansätzen gelöst werden?
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 22. Dez 2003, 18:30
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz