Entwickler-Ecke

Sonstiges (Delphi) - Wert für Endlosschleife (verrückt)


WeBsPaCe - So 24.04.05 17:53
Titel: Wert für Endlosschleife (verrückt)
Moin... ;) :D

Die Frage klingt jetzt gleich etwas komisch, aber ich kann's ganz einfach erklären. ;) Aber erstmal die Frage:

Welche Variable erreicht nie einen bestimmten Wert. Also z.B. hier:

Delphi-Quelltext
1:
2:
3:
4:
5:
var
b: Boolean;
begin
repeat b := False until b = True;
end;

wird b nie zu True. Also bekomm' ich eine Endlosschleife. Welchen Wert kann ich da nehmen, der sich z.B. nie ändert.

Mein Ziel ist es einfach, eine Endlosschleife (!!!) laufen zu lassen. Und zwar eine repeat-until-Schleife. Und jetzt muss ich natürlich dann bei until was stehen haben, was nie stimmt. Jetzt könnte ich das zwar genauso machen wie's da oben steht, aber ich hätt's gern eleganter. ( <-- wieder ein Beweis für meine "Verrücktheit" :mrgreen: )

Ich hab' jetzt sowas:

Delphi-Quelltext
1:
repeat until False;                    


Stimmt das? Kann ich das so verwenden? Überprüft das until einfach, ob die Bedingung dahinter True ist? Dann würde das ja stimmt oder?

Danke schonmal. ;)


Karlson - So 24.04.05 18:00

Kapier ich nicht :lol:

Wenn du b nie veränderst wird das auch die Schleife nicht kümmern.

Naja, was sehr elegant wäre, wäre vermutlich das hier:


Delphi-Quelltext
1:
2:
repeat blablabla;
 until 1=2;


;)

Im ernst, nimm doch für die Endlosschleife einen Thread, der lässt sich imho besser steuern.


WeBsPaCe - So 24.04.05 18:08

user profile iconKarlson hat folgendes geschrieben:
Kapier ich nicht :lol:

Hab ich mir fast gedacht... ;)

user profile iconKarlson hat folgendes geschrieben:
Wenn du b nie veränderst wird das auch die Schleife nicht kümmern.

Wie jetzt? :gruebel:

user profile iconKarlson hat folgendes geschrieben:
Naja, was sehr elegant wäre, wäre vermutlich das hier:

Delphi-Quelltext
1:
2:
repeat blablabla;
 until 1=2;

Stimmt. Daran hab ich noch gar nicht gedacht. :lol:

user profile iconKarlson hat folgendes geschrieben:
Im ernst, nimm doch für die Endlosschleife einen Thread, der lässt sich imho besser steuern.

Das ist "mit Spatzen auf Kanonen geschossen" oder so... :mrgreen:
Das soll nur eine 50-Zeilen-Konsolenanwendung werden. ;)


maxk - So 24.04.05 18:14
Titel: Re: Wert für Endlosschleife (verrückt)
user profile iconWeBsPaCe hat folgendes geschrieben:
Ich hab' jetzt sowas:

Delphi-Quelltext
1:
repeat until False;                    


Stimmt das? Kann ich das so verwenden?
Das wäre eine Endlosschleife. Bei until und while werden Bedingungen überprüft. 1=2 ist immer falsch. 1=2 ist aber auch immer false. Daher ist until false eine Endlosschleife (besser kriege ich es nicht erklärt). Ich würde dir aber empfehlen für deine Endlosschleife mit

Delphi-Quelltext
1:
2:
while True do begin
end;
zu arbeiten, dann erkennt man gleich, dass es eine Endlosschleife ist.

Zitat:
Und zwar eine repeat-until-Schleife.
Das ist bei ner Endlosschleife eigentlich egal, da der Code zwischen Anfang und Ende wiederholt wird - egal, ob am Anfang oder am Ende geprüft wird ;)

Gruß,
maxk


WeBsPaCe - So 24.04.05 18:20

user profile iconmaxk hat folgendes geschrieben:
Das wäre eine Endlosschleife. Bei until und while werden Bedingungen überprüft. 1=2 ist immer falsch. 1=2 ist aber auch immer false. Daher ist until false eine Endlosschleife (besser kriege ich es nicht erklärt).

Hat schon gereicht. :D

user profile iconmaxk hat folgendes geschrieben:
Ich würde dir aber empfehlen für deine Endlosschleife mit

Delphi-Quelltext
1:
while True do begin end;                    

zu arbeiten, dann erkennt man gleich, dass es eine Endlosschleife ist.

*g* Hab ich jetzt so ähnlich:

Delphi-Quelltext
1:
while 0 = 0 do (...)                    


user profile iconmaxk hat folgendes geschrieben:
Das ist bei ner Endlosschleife eigentlich egal, da der Code zwischen Anfang und Ende wiederholt wird - egal, ob am Anfang oder am Ende geprüft wird ;)

Weiß ich. ;) Aber irgendwie find ich repeat-until-Schleifen schöner als while-do... :lol:

^^bin halt verrückt... :mrgreen:

Also nochmal DANKE an euch alle! :D