Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - repeat ... until Schleife problem


CrOc - Fr 21.11.03 18:24
Titel: repeat ... until Schleife problem
Hi,
ich hab ein Lottoprogramm geschrieben, dass solange mittels einer "repeat ... until Schleife" per Zufall 6 Lottozahlen generiert, bis er z.B. 4 Richtige gefunden hat. Dabei soll sich die Zahl in meinem Label nach jedem Versuch um jeweils 1 erhöhen. Stattdessen passiert - nach dem ich den Button gedrück habe - garnichts, bis er die z.B. 4 Richitge gefunden hat und spuckt auch denn erst die Anzahl der Versuche aus. Nun hab ich es mit einem Timer probiert, der alle millisekunden den Button (ohne repeat ... until schleife) drückt. Dabei funktioniert alles einwandfrei, das Programm rechnet aber um einiges langsamer. D.h. die repeat schleife schafft 10000 Versuch in 10 Sekunden, während der Timer nur 1000 Versuche in 15 Sekunden schafft.
Gibt es irgend eine Möglichkeit, dass das Programm während einer repeat ... until schleife eine zahl ausgibt oder das der Timer schnelle funktioniert oder .... ?
Bin für jede Hilfe dankbar!


Klabautermann - Fr 21.11.03 18:29

Hallo,

baue in deine Schleife die Zeile:

Delphi-Quelltext
1:
Application.ProcessMessages;                    

ein.

Gruß
Klabautermann

PS: Durch das häufige aktuallisieren der ausgabe wird das Programm aber langsamer (wahrscheilich aber nciht so langsam wie die Timer Lösung).


Gausi - Fr 21.11.03 18:30

pack mal in die Schleife ein

Delphi-Quelltext
1:
application.processmessages;                    

rein, dann sollte es klappen.

Uuups...zu langsam ;-)


CrOc - Fr 21.11.03 18:47

hilft leider auch nichts.
das programm bleibt wieder während der Suche stehen (man keine ander Butten drücken, minimieren usw.), bis es die richtigen Zahlen gefunden hat!
Ich bräucht irgendwas, womit das Programm während der Suche noch ansprechbar ist und vielleicht noch die anzahl der versuche auch nach jeder aktualisierung ausgibt.


Klabautermann - Fr 21.11.03 19:02

Hallo CrOc,

hast du diese Zeile wirklich in die Schleife geschrieben?

Wenn ja dann solltest du mal die entsprechende Procedure hier posten, damit wir besser den Fehler suchen können.

Gruß
Klabautermann


CrOc - Fr 21.11.03 19:19

Sorry, war mein Fehler. Hab versehentlich den Befehl eine Zeile unter der until Schleife geschrieben!
Was macht eigentlich genau dieser Befehl?


Delete - Fr 21.11.03 19:37

Es ist kein Befehl, sondern eine Methode von TApplication. Sie sorgt dafür dass das Programm in seine Messageloop kuckt und anstehende Nachrichten abgearbeitet werden.


Klabautermann - Fr 21.11.03 20:45

...und so eine Nachricht könnt z.B. lauten: "Zeichne das Label neu".

Gruß
Klabautermann