Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm hängt bei Schleifen, warum? (https://www.delphipraxis.net/23353-programm-haengt-bei-schleifen-warum.html)

c4t 1. Jun 2004 21:41


Programm hängt bei Schleifen, warum?
 
Hallo sehr geehrte Delphianer,

ich kann folgendes Problem schon seit einiger Zeit bei meinen verschiedenen kleinen "Hausaufgaben-Programmen" nicht lösen. Ich dachte, ich wende mich mal an euch.

Also in letzet Zeit musste ich viel mit relativ verstrikten (for-)Schleifen arbeiten, um bestimmte Werte auszurechnen (z. B. Primzahlen). Da nun es aber ziemlich lange dauern kann, wenn man einen großen Bereich zum Überprüfen angibt, dauern auch die Schleifen lange. In dieser Zeit hängt das ganze Programmfenster und es können auch keine neuen Ergeignisse in dieser Zeit entgegengenommen werden.

Ich würde aber gerne (unter anderem) ein Statusbalken einbauen, damit der Benutzer sofort sehen kann, wie lange es noch ungefährt dauert. Oder zum Beispiel ein "Abbrechen"-Button. Beide Sachen funktionieren während sie Schleife ausgeführt wird nicht. Wie kann ich dieses ändern? Also es so für Delphi hinschreiben, dass es die for-Schleife als "nicht soo wichtig" ansieht, und trotz der Ausführung andere Ereignisse entgegen nimmt.

Ich hoffe ihr versteht mein Problem.

Gruß

c4t

Anubis 1. Jun 2004 21:46

Re: Programm hängt bei Schleifen, warum?
 
füg in die schleife ein application.Processmessages ein.

macht die schleife allerdings langsamer wenn du es nur jeden x druchlauf machst is es schneller.

abbrechen über andern button geht dann auch (mit variable und if variable dann break)

nailor 1. Jun 2004 21:47

Re: Programm hängt bei Schleifen, warum?
 
Das geht ganz so simpel nicht. Allerdings könntet du in die for-Schleife (sie wird dadurch zwar noch langsamer...) ein Application.ProcessMessages einbauen. Dann wird immer dann das andere abgearbeitet. Dann könntest du zum beispiel eine globale Variable per ButtonKlick setzen, die dafür sorgt, dass die Schleife verlassen wird.

Für ein Fortschrittsbalken such mal hier nach ProgressBar. Das Problem ist halt, dass du vorher irgendwie abschätzen musst, wie lange es insgesamt geht. Und so Sachen, wie "der wird garnicht neu gezeichnet, nur am Schluss" wird dir die Suche nach ProgressBar beantworten.

mfg,
nailor

c4t 1. Jun 2004 21:53

Re: Programm hängt bei Schleifen, warum?
 
Ich wusst doch, dass man sich auf euch verlassen kann.


Vielen Dank, die Tipps sind alles was ich brauchte. Nachlesen tu ich selbst :-D.

Gruß

c4t


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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