Autor Beitrag
winx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Mo 11.07.05 12:05 
Hi,

was bringt mir die Funktion "Application.ProcessMessages " ??? Wann muß ich sie einsetzen?

thx
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 11.07.05 12:11 
Application.ProcessMessages; stoppt die Ausführung des Quellcodes solange, wie für die Anwendung Nachrichten anstehen. Die Anwendung kann diese dann verarbeiten. Wenn sie damit fertig ist, wird der Code weiter ausgeführt. Das wird häufig benutzt, um während der Ausführung eines längeren Vorgangs die Anwendung vorm einfrieren zu beschützen, da der Benutzer das Gefühl erhält, das Programm wäre abgestürzt, da es ja nichtmehr auf die Nachrichten reagieren kann.

Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: Mo 11.07.05 13:05 
Hast du z.B. ne Schleife am laufen, die ends lange braucht, dann reagiert das Programm nicht auf Tastendrücke etc.
Wenn dud ann das application (der Befehl fürs Betriebssystem=> Guck mal, ob das Betriebssystem was hat) .processmessages ist, dann guckt er nach, ob vom OS Meldungen für das Programm vorliegen.
So guckt er dann z.B. in den Tastaturpuffer, oder ob auf einen Button gedrückt worden ist.
Und wenn das dann ist, meldet das OS deinem Programm:
Junge, da ist was passiert....für die entsprechende Procedure aus.

Wenn du das Application..... nicht mit einbeziehst, reagiert das Programm nicht auf Einflüsse von außen.

Ich würde das aber persönlich in Schleifen nicht jeden Schleifendurchgang verwenden, da es das Programm erheblich verlangsamt.

Also:

Hauptanwendungsgebiet in Schleifen.
Anwendung:

ausblenden Delphi-Quelltext
1:
if (Zählvariable) mod 100 (oder ne andere Zahl) =0 then application.processmessages;					
SQLException
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 89

WinXP + D5 Enterprise
Win2k + D6 Personal
BeitragVerfasst: Mo 11.07.05 13:11 
oder du benutzt gleich threads, dann entfällt das Application.ProcessMessages.

aber wie das geht weiss ich selber nicht, mir scheint es gibt niemanden der das leicht verständlich erklären kann.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mo 11.07.05 13:16 
Threads haben aber den Nachteil, dass du synchronisieren musst, wenn 2 oder mehr Units auf ein und dieselbe VAraiable zugreifen können.