Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Application.ProcessMessage (https://www.delphipraxis.net/45462-application-processmessage.html)

MCXSC 6. Mai 2005 22:21


Application.ProcessMessage
 
Hallo,

ich lese mitteiles folgenden Code alle Kategorien einer INI-Datei ein:

Delphi-Quellcode:
Sec := TStringList.Create;
Ini := TIniFile.Create('liste.ini');
Ini.ReadSections(Sec);
for i := 0 to Sec.Count-1 do begin
ListView1.items.add(Sec.Strings[i]);
end;
Ini.Free;
Sec.Free;
Allerdings bleibt dabei die Anwendungs pausiert, d.h. kein Cursor-Wechsel, nochnichtmal die Fenstergröße kann man verändern.

Habe irgendwas von "Application.ProcessMessage" gelesen, aber habe nicht wirklich kapiert, wie man diese Funktion (?) verwendet...

Kann mir eventull jemand helfen???

Danke im vorraus, MCXSC

[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]

Khabarakh 6. Mai 2005 22:34

Re: Application.ProcessMessage
 
Einfach in der Schleife aufrufen :wink: .

PS: TApplication.ProcessMessages

Johnny_W 6. Mai 2005 22:48

Re: Application.ProcessMessage
 
Hiho,

Gehe ich recht der Annahme, daß Listview1 vom Typ TListbox ist?
Die Komponente Listview1:TListview hat keine solche überladene Funktion Add falls ich mich jetzt nicht total irre. :gruebel:


Ansonsten versuch mal:

Delphi-Quellcode:
Sec := TStringList.Create;
Ini := TIniFile.Create('liste.ini');

try
  Ini.ReadSections(Sec);
  Listview1.Items.Assign(Sec);
finally
  Ini.Free;
  Sec.Free;
end;

MfG :)

MCXSC 6. Mai 2005 23:12

Re: Application.ProcessMessage
 
Achso ja, stimmt natürlich beides... ;-) Hatte den Code kurz mal getippt, um ein kleines Beispiel zu zeigen....

CalganX 7. Mai 2005 10:42

Re: Application.ProcessMessage
 
Hi,
Delphi-Referenz durchsuchenApplication.ProcessMessages weist die Anwendung bzw. die entsprechende Fenster-Methode an alle Nachrichten, die bisher an die Anwendung gesendet wurden zu verarbeiten. Bedeutet also Dinge, wie Fenster neuzeichnen, auf Button-Klick reagieren etc. Und erst wenn das geschehen ist, wird die aktuelle Methode fortgesetzt.
Sprich du musst sie einfach da verwenden, wo du auf Dinge in der Anwendung reagieren willst. Sinnvoll also innerhalb der Schleife. ;)

Chris

Phistev 7. Mai 2005 14:58

Re: Application.ProcessMessage
 
Ich würde allerdings empfehlen, Application.ProcessMessages nicht bei jedem Schleifendurchlauf auszuführen (es sei denn, der Block umfasst 30 Anweisungen und mehr), da sonst die Performance des Programmes drastisch sinkt.
Delphi-Quellcode:
... (if i mod 10) = 0  //nur bei jedem zehnten Schleifendurchlauf
 then Application.ProcessMessages ...

Micha88 19. Jul 2010 18:49

AW: Application.ProcessMessage
 
Obwohl dieser beitrag schon fünf Jahre alt ist, hier noch ein Tipp, welcher auch bei selbst gezeichneten ListBoxes usw enorme Leistungssteigerung bringt:

BeginUpdate
und
EndUpdate!

himitsu 19. Jul 2010 18:57

AW: Application.ProcessMessage
 
Leistungssteigerung durch Application.ProcessMessages? :shock:
So sollte das Einfügen eigentlich länger dauern (nur daß währenddessen das Programm noch reagiert, falls es "länger" dauert)

Dafür ist wohl eher das ListView1.BeginUpdate verantwortlich.
Delphi-Referenz durchsuchenTListItems.BeginUpdate (die englische Beschreibung beschreibt es besser)

PS: Sicher daß bei dir nicht ein paar .Items fehlen?
Delphi-Quellcode:
ListView1.Items.BeginUpdate;
for i := 0 to Sec.Count-1 do
begin
  ListView1.Items.add(Sec[i]);
end;
ListView1.Items.EndUpdate;

Micha88 19. Jul 2010 23:12

AW: Application.ProcessMessage
 
Zitat:

Leistungssteigerung durch Application.ProcessMessages?
Wer sagt denn sowas :shock: ich jedenfalls nicht :D
In meinem Beitrag steht nur, dass Begin/Endupdate eine Mehrleistung bewirkt.

Ich denke, du hattest dich verlesen.

mkinzler 20. Jul 2010 05:20

AW: Application.ProcessMessage
 
Na weil du deinen ursprünglichen Beitrag editiert hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz