Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi nur eine if-Schleife ausführen (https://www.delphipraxis.net/141132-nur-eine-if-schleife-ausfuehren.html)

Jaegermeister1992 3. Okt 2009 09:32


nur eine if-Schleife ausführen
 
Delphi-Quellcode:
i:= 16   
if i=16 then begin

end

else if i=8+8 then begin

end

else if i=4*4 then begin

end

else if i=2+2+2+2+2+2+2+2

end
wenn man, dass etz ausführt trifft natürlich alles zu ist ja klar aber ich will das das Programm wenn die erste schleife ausgeführt wurde nicht noch die nächste ausgeführt wird .. gibt es so einen befehl wie goto zeile sowieso in delphi? oder wie mache ich das?

[edit=Matze][c]-Tags durch [delphi]-Tags ersetzt. MfG, Matze[/edit]

Matze 3. Okt 2009 09:35

Re: nur eine if-Schleife ausführen
 
Hallo,

erstens gibt es keine if-Schleifen, sondern if-Anweisungen. Eine Schleife ist etwas ganz anderes.
Zweitens gibt es in Delphi auch Delphi-Referenz durchsuchengoto, was jedoch unsauberer Programmierstil ist.
Drittens: Was möchtest du genau realisieren? Ich habe es noch nicht ganz verstanden. In deinem Fall sollte die 2. Schleife nicht ausgeführt werden, da die erste bereits zutrifft, hätte ich gesagt.

Grüße, Matze

mkinzler 3. Okt 2009 09:36

Re: nur eine if-Schleife ausführen
 
Ich werde aus deinem Beitrag absolut nicht schlau.
Ich sehe keine Schleifen und die If Bedingugen sind alle identisch

Matze 3. Okt 2009 09:42

Re: nur eine if-Schleife ausführen
 
Etwas OT:
In fast jedem deiner Beiträge ist das Wort "etz" zu finden. Ich weiß nicht ob das bei dir Mode ist oder generell, aber wenn du "jetzt" meinst, dann schreibe es doch bitte auch so. Das liest sich viel angenehmer und wirkt sachlicher. Zumindest geht es mir so.
Ich möchte dir nicht vorschreiben, was du wie schreiben sollst, aber ich denke, andere werden es dir danken, da deine Beiträge dann besser zu verstehen sind. Und die Verwendung von Punkt und Komma wäre auch sehr sinnvoll. Ich musste deinen Satz mindestens 2 x lesen um ihn zu verstehen.

Wolfgang Mix 3. Okt 2009 09:43

Re: nur eine if-Schleife ausführen
 
Da die If-Anweisungen alle identisch sind, sehe ich keinen Sinn in Deinem Vorhaben.

Schau Dir auch mal die Case-Struktur an

Gruß

Wolfgang

silver-moon-2000 3. Okt 2009 09:43

Re: nur eine if-Schleife ausführen
 
Man könnte z.B. das ganze in ein Case packen, so nach dem Prinzip:
Delphi-Quellcode:
case i of
16: begin end;
8+8: begin end;
end;
nur wird das nicht funktionieren, denn Du läufst hier in ein Problem:
Für den Compiler macht es keinen Unterschied, ob Du schreibst 16, 8+8, 4*4 oder sonstwas.
Die rechten Seiten dieser Vergleiche werden immer ausgewertet, bevor verglichen wird, und da auf der Rechten Seite eine Berechnung steht, wird das Ergbnis ermittelt, und das ist bei allen Rechnungen immer 16. Also fragst Du praktisch 4mal dieselbe Bedingung ab.

Du willst vermutlich wissen, auf welchem Weg das Ergebnis von 16 erreicht wurde, also ob gerechnet wurde 8+8 oder 4*4, aber so wirst Du das nicht erfahren können.

Jaegermeister1992 3. Okt 2009 09:44

Re: nur eine if-Schleife ausführen
 
An Matze:
Also eigt. sollte doch nur die erste Anweisung ausgeführt werden oder?
wenn ich das aber auf mein Programm umschreibe dann führt er alle aus also dann gibt er mir wenn man etz beispielsweise für den inhalt der if anweisung ne showmessagemeldung ausgeben lässt für jedes if und else if ne Shoemessage aus?

Matze 3. Okt 2009 09:46

Re: nur eine if-Schleife ausführen
 
Du mit deinem "etz". :wall:

Schreibe mal deutlich und verständlich was du genau möchtest.

Jaegermeister1992 3. Okt 2009 09:48

Re: nur eine if-Schleife ausführen
 
Delphi-Quellcode:
procedure TForm1.Computer1Legen;
Var ArtA, FarbeA, FarbeC1, ArtC1, AblegenC1 : string;
    i : integer;
begin

  ArtA:=Copy(Aktuell.Items[0],3,1);
  FarbeA:=Copy(Aktuell.Items[0],0,1);

  for i:= 0 to C1.Items.Count-1 do begin
    FarbeC1:=Copy(C1.Items[i],0,1);
    ArtC1:=Copy(C1.Items[i],3,1);
    AblegenC1:= C1.Items[i];

    if (FarbeC1 = 'V') and (ArtC1 = 'Z') then begin
      Showmessage('Sie haben eine Vierziehen');
      Computer2Legen;
    end

    else if (FarbeC1 = 'F') and (ArtC1 = 'W') then begin
      Showmessage('Sie haben eine Farbwahl');
      Computer2Legen;
    end

    else if (FarbeC1 = FarbeA) and (ArtC1 = 'A') then begin
      Showmessage('Sie haben ein Aussetzen');
      Computer2Legen;
    end


    else if (FarbeC1 = FarbeA) and (ArtC1 = 'Z') then begin
      Showmessage('Sie haben ein Zweiziehen');
      Computer2Legen;
    end

    else if (FarbeC1 = FarbeA) and (ArtC1 = 'R') then begin
      Showmessage('Sie haben ein Richtungswechsel');
      Computer2Legen;
    end

    else if (FarbeC1 = FarbeA) or (ArtC1 = ArtA) then begin
      Showmessage('Hallo ' + inttostr(i));
      Computer2Legen;
    end;

  end;

end;
So das ist der ganze Code auf den ich das anwenden will
die Showmessage sind nur zum Test da werden nohc ersetz später.
Es handelt sich um das Spiel UNO
des Feld C1.ITems sind die aktuellen Karten des ComputerSpieler1
Das Feld Aktuell.Items ist die aktuell gelegte karte vom spieler zuvor.

Nun soll aber von diesen If-Anweisungen immer nur eine ausgeführt werden udn zwar von oben nach unten wenn die erste zutrifft sollen alle danach ignoriert werden oder wenn die 2. dann alle danach ignoriert werden...

Matze 3. Okt 2009 09:49

Re: nur eine if-Schleife ausführen
 
Zitat:

Zitat von Jaegermeister1992
Nun soll aber von diesen If-Anweisungen immer nur eine ausgeführt werden udn zwar von oben nach unten wenn die erste zutrifft sollen alle danach ignoriert werden oder wenn die 2. dann alle danach ignoriert werden...

Ist das denn nicht der Fall?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr.
Seite 1 von 4  1 23     Letzte »    

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