AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Application.ProcessMessages;

Ein Thema von CalganX · begonnen am 21. Jul 2002 · letzter Beitrag vom 21. Jul 2002
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Application.ProcessMessages;

  Alt 21. Jul 2002, 15:36
Ja, wat is dat:
Code:
Application.ProcessMessages;
In vielen Codes zusehen und sehr nützlich (habe es in einem Programm eingebaut, seit dem läuft es ganz brav).
Ich weiß, es gibt da sowas wie Hilfe, aber daraus werde ich nicht schlau.

Chris1308
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#2
  Alt 21. Jul 2002, 15:53

Einfach ausgedrückt, ermöglicht ProcessMessages, dass Windows zum Zuge kommt und seine Warteschlange aufräumt. Dazu gehört z.B. das Neuzeichnen Deines Formulares, falls es von anderen Fenstern überdeckt war u.dgl.

Wenn eine Anwendung Anweisungen enthält, welche sehr langwierig sind, sollte man diesen Befehl einbauen, da Windows sonst erst zum Zuge kommt, wenn eine Funktion aufgerufen wirsd, die ohnehin auf die Windows-Nachrichten-Warteschlange zugreift. Falls Du z.B. langwierige Berechnungen vornimmst, sorgt ProcessMessages dafür, dass Dein Fenster wieder in Ordnung gebracht wird, falls es von anderen Programmen verdeckt war.

Nachdem der Aufruf natürlich Zeit kostet, soll man ihn aber nur an Stellen einbauen, wo der Befehl nicht extrem häufig aufgerufen wird.

Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 21. Jul 2002, 16:00
Zitat von Alfons_G:
Nachdem der Aufruf natürlich Zeit kostet, soll man ihn aber nur an Stellen einbauen, wo der Befehl nicht extrem häufig aufgerufen wird.
Also Sachen wie TForm1.FormDestroy korrekt?

Chris1308
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4
  Alt 21. Jul 2002, 16:05
Hängt davon ab, was Du alles in dieser Ereignisprozedur machst; so allgemein würde ich kein "Application.ProcessMessages" in ein TForm.OnDestroy-Event schreiben. Spätestens wenn das abgearbeitet ist, hat Windows eh' wieder Zeit, sich um seine Warteschlange zu kümmern.


Grüße,
Daniel
Daniel R. Wolf
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 21. Jul 2002, 18:33
Moin Zusammen,

Zitat von Alfons_G:
...da Windows sonst erst zum Zuge kommt, wenn eine Funktion aufgerufen wirsd...
Jain, es geht hier nur nicht um Windows, dass hier nicht zum Zuge kommt, sondern die Windows Procedure des jeweiligen Threads.

I.d.R. werden die Messages die an ein Fenster geschickt werden in der Message Queue (Warteschlange) des Threads gepuffert, dem das Fenster "gehört".

Application.ProcessMessages sorgt dann, jedesmal, wenn es aufgerufen wird, dafür, dass diese anstehenden Messages verarbeitet werden.
Deshalb wirkt so ein Aufruf auch oft kaum auf die Geschwindigkeit aus, wenn keine Messages zur Verarbeitung anstehen.

Im OnDestroy Event macht der Aufruf für mich irgendwie nicht ungedingt Sinn.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#6
  Alt 21. Jul 2002, 19:55
Hoi

Wenn du einen Abbrechen-Knopf einbauen willst solltest du in langwirigen Berechnungen auch ein ProcessMessages einbauen.
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 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