Autor Beitrag
CrOc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Standard
BeitragVerfasst: Fr 21.11.03 18:24 
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 21.11.03 18:29 
Hallo,

baue in deine Schleife die Zeile:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 21.11.03 18:30 
pack mal in die Schleife ein
ausblenden Delphi-Quelltext
1:
application.processmessages;					

rein, dann sollte es klappen.

Uuups...zu langsam ;-)

_________________
We are, we were and will not be.
CrOc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Standard
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Standard
BeitragVerfasst: 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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 21.11.03 20:45 
...und so eine Nachricht könnt z.B. lauten: "Zeichne das Label neu".

Gruß
Klabautermann