Delphi-PRAXiS
Seite 2 von 4     12 34      

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:52

Re: nur eine if-Schleife ausführen
 
Nein mal ein Beispiel für den INhalt von C1.Items:

F-W
V-Z
G-5
B-7
Y-7
R-6
R-1

So sind natürlich mehrere If-Anweisungen erfüllt aber ich will das nur die erste die erfüllt wird aus ausgeführt wird die danach nicht mehr

Jaegermeister1992 3. Okt 2009 09:54

Re: nur eine if-Schleife ausführen
 
oder könnte man die For-Schleife nach erfüllen einer if ANweisung stoppen?

Matze 3. Okt 2009 09:55

Re: nur eine if-Schleife ausführen
 
Also du gehst in deinem Fall diese Liste durch und prüft für jede Zeile ob etwas zutrifft. Hier wäre das erste, was wahr ist "F-W" und somit der 2. if-Zweig.
Anschließend arbeitest du die Liste weiter ab. Ist das vielleicht deine Problem?

Wenn du die Schleife verlassen möchtest, falls eine Bedingung zutrifft, dann müsstest du in den if-Anweisungen mit "break" die Schleife verlassen.

Wenn ich dich immer noch falsch verstanden habe tut's mir Leid.

Grüße, Matze

Edit: Dein "Push-Beitrag" sagt mir, dass ich dich dieses mal verstanden habe. :firejump:

Jaegermeister1992 3. Okt 2009 09:58

Re: nur eine if-Schleife ausführen
 
Danke das ist das was cih wissen wollte so müsste es gehen danke!

Matze 3. Okt 2009 10:01

Re: nur eine if-Schleife ausführen
 
Und für die Zukunft wäre es neben dem Versuch, die Grammatik etwas aufzupeppeln sinnvoll, wenn du gleich den richtigen Quellcode zeigen würdest. Der aus deinem Ausgangsbeitrag hatte mit deinem Problem nichts zu tun, da zum einen die Schleife fehlte und zum anderen alle Bedingungen gleich waren und somit für unnötige Verwirrung sorgten.
Also bevor du etwas falsch zu vereinfachen versuchst, zeige lieber gleich den richtigen Code. ;)

Jaegermeister1992 3. Okt 2009 10:07

Re: nur eine if-Schleife ausführen
 
Geht klar;-)

DeddyH 3. Okt 2009 10:17

Re: nur eine if-Schleife ausführen
 
Echt etz? :mrgreen: (SCNR^^)

haentschman 3. Okt 2009 10:38

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

Zitat:

Showmessage('Sie haben eine Vierziehen');
...was bedeutet das ? Das klingt wie eine elektronische Übersetzung aus dem Cinesischen. Ist das bei dem Spiel so ? :gruebel:

zum Thema: verschachtelte if Anweisungen funktionieren zwar bringen aber mit steigender Komplexität Unübersicht mit sich. Versuche das ganze mal mit case Anweisungen umzusetzen. Du bist dir später dankbar. :thumb:

himitsu 3. Okt 2009 10:57

Re: nur eine if-Schleife ausführen
 
CASE geht mit gleichen Werten nicht
und auch bei verschachtelten IF-Anweisung ist es recht "sinnlos"


16, 8+8, 4*4 usw. ergibt alles das Selbe

CASE läßt aber nur unterschiedliche Werte zu (Fehlermeldungen wie doppeltes Case-Label wären die Folge)
und beim IF würde es zwar kompiliert werden, aber da die folgenden Bedingungen nie erreicht werden, sind sie doch eigentlich vollkommen unnütz.

Jaegermeister1992 3. Okt 2009 11:14

Re: nur eine if-Schleife ausführen
 
Also das funktioniert mitlerweile recht gut nun noch eine Frage:

die selbe For.Schleife wie vorhin.
Wenn nun aber keine if Anweisung in der Schleife erfüllt wird, dann soll ... passieren
Delphi-Quellcode:
  for i:= 0 to C2.Items.Count-1 do begin
    FarbeC2:=Copy(C2.Items[i],0,1);
    ArtC2:=Copy(C2.Items[i],3,1);
    AblegenC2:= C2.Items[i];

    if (FarbeC2 = 'V') and (ArtC2 = 'Z') then begin
      Showmessage('Sie haben eine Vierzehn');
      break;
    end

    else if (FarbeC2 = 'F') and (ArtC2 = 'W') then begin
      Showmessage('Sie haben eine Farbwahl');
      break;
    end

    else if (FarbeC2 = FarbeA) and (ArtC2 = 'A') then begin
      Showmessage('Sie haben ein Aussetzen');
      break;
    end


    else if (FarbeC2 = FarbeA) and (ArtC2 = 'Z') then begin
      Showmessage('Sie haben ein Zweiziehen');
      break;
      end

    else if (FarbeC2 = FarbeA) and (ArtC2 = 'R') then begin
      Showmessage('Sie haben ein Richtungswechsel');
      break;
    end

    else if (FarbeC2 = FarbeA) or (ArtC2 = ArtA) then begin
      Ablegen.Picture.Loadfromfile('Karten/' + C2.Items[i] + '.bmp');
      Aktuell.Items.Insert(0, C2.Items[i]);
      C2.Items.Delete(i);
      AnzahlC2:=AnzahlC2-1;
      NachlegenC2;
      break;
    end
    else Showmessage('Hallo');
  end;
So habe ich mir das gedacht, aber dann macht er es nach jederm SChleifendurchlauf aber er soll es nur machen wenn die schleife durch ist und nichts passiert ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.
Seite 2 von 4     12 34      

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