| Autor |
Beitrag |
Stoffel1984
      
Beiträge: 219
Win NT, Win 2000
D6 Prof
|
Verfasst: Do 11.12.03 11:14
Hallo,
ich möchte gerne wissen ob es möglich ist eine Schleife direkt nach dem eintreffen des Abbruchereignisses abzubrechen? Also nicht erst am Schleifenende bzw Anfang sondern sofort.
Momentan mache ich das so
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| repeat i := i+15; Abbrechen; divAnweisung divAnweisung i := i+25; Abbrechen; until |
Ich führ halt nach jedem Wechsel der Variable die procedure Abbrechen aus. Kann ich das nicht irgendwie anders lösen? Die Schleife ist in Wirklichkeit ca. 120 Zeilen lang.
Habt Ihr nen Rat?
Stoffel
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Do 11.12.03 11:33
Hallo,
mit Break kannst Du normalerweise jede Schleife sofort beenden.
Delphi-Quelltext 1: 2: 3: 4: 5:
| for i:=0 to 100 do begin if (i=25) then Break else ... end; |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
Stoffel1984 
      
Beiträge: 219
Win NT, Win 2000
D6 Prof
|
Verfasst: Do 11.12.03 11:36
hallo,
ja das ist klar. Aber dazu muss das break ja an einer bestimmten Stelle der Schleife stehn und es dann überprüfen. Ich möchte allerdings das es sobald dieser Fall Eintritt also z.b. i =1000 sofort rauspringt. Praktisch ein globaler break. Verstehst was ich mein?
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Do 11.12.03 11:43
Hallo,
| Stoffel1984 hat folgendes geschrieben: |
Verstehst was ich mein?
|
erhrlich gesagt, Nein.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
Andi1982
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Do 11.12.03 11:50
Ich versteh auch nicht wirklich was du meinst. Wie brichst du denn in der Funktion "Abbrechen" ab?? setzt du da ein merkmal dass das Until dann erkennt dass schluss sein soll oder was??
Mach doch einfach mitten rein die Abrage "If i=1000 then break;" Musst du halt nach jedem verändern von i machen... Aber sowas wie "whenever I >= 1000" gibts in Delphi glaube ich nicht...
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Stoffel1984 
      
Beiträge: 219
Win NT, Win 2000
D6 Prof
|
Verfasst: Do 11.12.03 13:09
| Andi1982 hat folgendes geschrieben: | | Aber sowas wie "whenever I >= 1000" gibts in Delphi glaube ich nicht... |
...schade sowas hab ich gesucht!
okay dann halt nach jedem verändern von i überprüfen.
Danke trotzdem!
Stoffel
|
|
JoelH
      
Beiträge: 806
Erhaltene Danke: 17
Win10
Delphi Alexandria 11.2 Patch 1
|
Verfasst: Fr 12.12.03 10:01
Titel: hmm,
| Stoffel1984 hat folgendes geschrieben: | ...
okay dann halt nach jedem verändern von i überprüfen.
...
Stoffel |
mal ne Frage, was denkst du wie es der Rechner machen würde wenn du die Möglichkeit zu einen 'whenever....' hättest ? Dein Programm würde langsamer werden denn der Rechner muss so oder so nach jeder erhöhung abfragen ob deine Bedingung erfüllt ist, denn ein Hellseher ist er auch nicht. Aber bei einem Whenever müsste er wohl einen extra Thread rennen lassen oder jeweils einen Sprung mehr machen als wenn du die Abfrage direkt programmierst.
Programmierer sind zwar faul aber so faul ?
_________________ mfg. Joel
|
|
Andi1982
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Fr 12.12.03 10:05
Eben, die Programme würden dadurch wirklich sehr langsam werden. Ich kenne whenever nur von SQLs, da ist es noch in ordnung. Aber in einem normalen Programm würde er dann nach jeder instruktion eine if abfrage machen ob i sich verändert hat. Bei sql macht er es halt nur nach jedem SQL, da gehts wie gesagt noch...
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
Stoffel1984 
      
Beiträge: 219
Win NT, Win 2000
D6 Prof
|
Verfasst: Fr 12.12.03 11:07
ist mir schon klar... jetzt zumindest!
Danke nochmal...
|
|
Wolff68
      
Beiträge: 302
Erhaltene Danke: 1
WinXP home
D6 Prof
|
Verfasst: Sa 20.12.03 12:17
| Andi1982 hat folgendes geschrieben: | | Aber sowas wie "whenever I >= 1000" gibts in Delphi glaube ich nicht... |
Ausser man definiert I über einen Zahlentyp der nicht größer als 1000 werden kann und schaltet die Bereichsprüfung ein.
Delphi-Quelltext 1: 2: 3: 4: 5:
| type tiLimited = 0..1000;
var i : tiLimited;
{$R+} |
Aber ich wage mal zu bezweifeln, daß Stoffel das Problem mit dem Auslösen von Exceptions lösen wollte... ... ...
_________________ "Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
|
|