AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

nur eine if-Schleife ausführen

Ein Thema von Jaegermeister1992 · begonnen am 3. Okt 2009 · letzter Beitrag vom 3. Okt 2009
Antwort Antwort
Seite 3 von 4     123 4      
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#21

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 11:22
Dann brauchst du eine zusätzliche boolesche Variable, die vor der for-Schleife auf false gesetzt wird und bei jedem Treffer (ähnlich dem bisherigen ShowMessage) auf true geändert wird; wenn sie nach der for-Schleife immer noch false ist, dann kommt einmalig die gewünschte Schlussmeldung.

Merke: Wenn etwas bei einer Schleife nur einmal gemacht werden soll, gehört es nur selten in die Schleife.

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#22

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 11:58
Ich glaube, Du würdest besser mit einem repeat...until statt mit for klarkommen.

Delphi-Quellcode:

var
  bExit : boolean;
  i : integer;

begin
  bExit := false;
  i := 0;
  repeat
    if dieses then
    begin
      //Anweisung
      bExit := true;
    end
    else if jenes then
    begin
      //Anweisung
      bExit := true;
    end
    //....weiter so bis
    else if i = C2.Items.Count-1 then
    begin
      //hier wolltest Du noch was machen weil keine Bedingung erfüllt wurde...
      bExit := true;
    end;


    inc(i);
  until bExit;


end.
Ungetestet, aber so wäre es evtl. übersichtlicher und Du würdest das break sparen, was von den Verfechtern der reinen Lehre gerne angemeckert wird.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#23

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 12:48
@ Matze:
Zitat:
erstens gibt es keine if-Schleifen,
Ich weiss, dass folgender Code verpönt ist, aber es scheint sie doch noch zu geben

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
label hier;
begin
    i:=0;
    hier:
    inc (i);
    if i < 10 then goto hier;
    edit1.Text:=IntToStr(i);
end;

@alle

Das mit dem Goto bitte ganz schnell wieder vergessen, sonst mache ich mich hier unbeliebt

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 13:01
Zitat von Wolfgang Mix:
@alle
Das mit dem Goto bitte ganz schnell wieder vergessen, sonst mache ich mich hier unbeliebt
wenn man weiß was man macht, dann ist Goto ein ganz legitimier Befehl.
Immerhin baut While-Do, Repeat-Unit, Case, If-Then-(Else) und sogar Try-Except/Finally intern auch nur auf Goto auf ... also auf Jump-Befehlen (ASM)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#25

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 13:27
Hallo,

Zitat von Jaegermeister1992:
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:
//...
      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.
dann frag doch ob die Schleife durch ist:
Delphi-Quellcode:
//...
      AnzahlC2:=AnzahlC2-1;
      NachlegenC2;
      break;
    end
    else if i = C2.Items.Count-1 then // das war der letzte Durchgang
      Showmessage('Hallo');
  end;
//Edit: Ich sehe gerade das es im Grunde das gleiche wie der Vorschlag von messie ist.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 13:33
ich mach es immer so ... finde es so jedenfalls verständlicher
Delphi-Quellcode:
i := 0;
while i < C2.Items.Count do
begin
  if dieses then
  begin
    // Anweisung
    Break;
  end
  else if jenes then
  begin
    // Anweisung
    Break;
  end
  Inc(i);
end;
if i = C2.Items.Count then
begin
  // Anweisung, wenn nichts zutraf
end;
(theoretisch könnte man auch das ELSE hier weglassen, da es vom Aufrufpfad her auf's Selbe rauskommt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Jaegermeister1992

Registriert seit: 2. Okt 2009
18 Beiträge
 
#27

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 14:45
Danke Danke so funktionierts
  Mit Zitat antworten Zitat
Rudirabbit

Registriert seit: 27. Sep 2006
111 Beiträge
 
#28

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 18:32
Hallo
Zitat von Wolfgang Mix:
Zitat:
Das mit dem Goto bitte ganz schnell wieder vergessen, sonst mache ich mich hier unbeliebt Very Happy
Ich hatte den "Goto" noch nie vermisst, und noch nie gebraucht.
Erinnert mich auch an den üblen Basic Code (vor ca. 20 Jahren)

Zitat von himitsu:
Zitat:
Immerhin baut While-Do, Repeat-Unit, Case, If-Then-(Else) und sogar Try-Except/Finally intern auch nur auf Goto auf ... also auf Jump-Befehlen (ASM
Stimmt - ASM ist auch nur ein Spaghetticode - Letztendlich nur das versteht die Cpu.
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#29

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 18:46
Der Code von mir stammt noch aus den 70er Jahren unter FORTRAN77.
Der wurde uns damals tatsächlich als IF-Schleife verkauft.
Übrigens: Zum Testen musste man die Befehle einzeln auf Lochkarten stanzen,
beim Uni-Computerzentrum eine Testzeit beantragen usw.
Wenn ich dann gelegentlich nicht über den Begriff IF-Schleife stolpere, so bitte ich um Nachsehen.

Gruß

Wolfgang

P.S.:Ich hoffe, Matze ist von mir als Pauker nicht mehr so ganz enttäuscht.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: nur eine if-Schleife ausführen

  Alt 3. Okt 2009, 20:05
Bist ja anscheinend nicht der einzige Lehrer, welcher von IF-Schleifen redet,
jedenfalls, wenn man betrachtet, wieviele Schüle hier so vorbeikommen und auch davon reden
(es sei denn die waren rein zufällig alle bei dir )

also keine Sorge
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 22:48 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