AGB  ·  Datenschutz  ·  Impressum  







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

Application.ProcessMessage

Ein Thema von MCXSC · begonnen am 6. Mai 2005 · letzter Beitrag vom 20. Jul 2010
Antwort Antwort
MCXSC
(Gast)

n/a Beiträge
 
#1

Application.ProcessMessage

  Alt 6. Mai 2005, 22:21
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]
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Application.ProcessMessage

  Alt 6. Mai 2005, 22:34
Einfach in der Schleife aufrufen .

PS: TApplication.ProcessMessages
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Johnny_W

Registriert seit: 27. Apr 2005
33 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Application.ProcessMessage

  Alt 6. Mai 2005, 22:48
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.


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
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#4

Re: Application.ProcessMessage

  Alt 6. Mai 2005, 23:12
Achso ja, stimmt natürlich beides... Hatte den Code kurz mal getippt, um ein kleines Beispiel zu zeigen....
  Mit Zitat antworten Zitat
CalganX

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

Re: Application.ProcessMessage

  Alt 7. Mai 2005, 10:42
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
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#6

Re: Application.ProcessMessage

  Alt 7. Mai 2005, 14:58
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 ...
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#7

AW: Application.ProcessMessage

  Alt 19. Jul 2010, 18:49
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!

Geändert von Micha88 (19. Jul 2010 um 19:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#8

AW: Application.ProcessMessage

  Alt 19. Jul 2010, 18:57
Leistungssteigerung durch Application.ProcessMessages?
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Jul 2010 um 19:08 Uhr)
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#9

AW: Application.ProcessMessage

  Alt 19. Jul 2010, 23:12
Zitat:
Leistungssteigerung durch Application.ProcessMessages?
Wer sagt denn sowas ich jedenfalls nicht
In meinem Beitrag steht nur, dass Begin/Endupdate eine Mehrleistung bewirkt.

Ich denke, du hattest dich verlesen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Application.ProcessMessage

  Alt 20. Jul 2010, 05:20
Na weil du deinen ursprünglichen Beitrag editiert hast.
Markus Kinzler
  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 14:03 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