Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Laden eines größeren IXmldocument-keine Reaktion des Prog. (https://www.delphipraxis.net/98016-laden-eines-groesseren-ixmldocument-keine-reaktion-des-prog.html)

Fritzmaier 20. Aug 2007 20:29


Laden eines größeren IXmldocument-keine Reaktion des Prog.
 
Zitat:

Bevor der Inhalt eines XML-Dokuments mittels IXMLDocument geprüft oder geändert werden kann, müssen Sie das Dokument aktivieren.
aus meinem Code:

myXML.LoadFromFile(opendialog1.FileName);
application.ProcessMessages;
myxml.Active:=true;
application.ProcessMessages;

während dies abläuft, reagiert der Rechner de facto nicht. Läßt sich da was machen ?

mirage228 20. Aug 2007 20:36

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
Du kannst das Laden des XML-Objekts (sprich speziell den Aufruf von LoadFromFile / Active := True etc.) in einen Thread auslagern. Deine .ProcessMessage() Aufrufe bewirken hier recht wenig.

mfG
mirage228

semo 20. Aug 2007 20:48

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
frage: wie groß ist denn dein xml dokument?

Fritzmaier 21. Aug 2007 15:51

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
3,6 MB

Bernhard Geyer 21. Aug 2007 16:05

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
Solange du den gesammten DOM der XML-Datei lädst dauert es halt seine Zeit. XML ist nicht gerade ressourcenschonend.

Brauchst du alles in der XML-Datei oder nur einen kleinen Auszug?

Fritzmaier 21. Aug 2007 16:19

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
brauche alles. Das Laden dauert ca. 45 Sekunden. Die Daten werden u.a. in einer treeview angezeigt. Leider hängen (manchmal) dann andere Anwendungen in dieser Zeit, z.B. Firefox.

Hätte noch eine andere Frage: Wie läßt sich eine Progressbar über den Ladefortschritt realisieren (abhängig von der Zahl der Tags) ?

Bernhard Geyer 21. Aug 2007 16:36

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
Zitat:

Zitat von Fritzmaier
brauche alles. Das Laden dauert ca. 45 Sekunden. Die Daten werden u.a. in einer treeview angezeigt. Leider hängen (manchmal) dann andere Anwendungen in dieser Zeit, z.B. Firefox.

Andere Anwendungen hängen weil Windows den Taskwechsel nicht mehr richtig hinbekommt. Du könntest die Priorität während des ladens verringern

Zitat:

Zitat von Fritzmaier
Wie läßt sich eine Progressbar über den Ladefortschritt realisieren (abhängig von der Zahl der Tags) ?

Und woher willst du die Zahl der Tags bekommen bzw. wieviel Tags der PC pro Sekunde schaft?

Fritzmaier 21. Aug 2007 16:49

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
nach der Zahl der Tags zielt ja meine Frage...

merke grade, daß ich mich ungenau ausgedrückt habe: Das eigentl. Laden dauert nicht so lange, sondern das anschließende Auswerten und Anzeigen in der treeview...

habe ich nach dem Laden (also nachdem myxml.Active:=true; abgearbeitet ist) irgendwo die Tagzahl oder vergleichbares abrufbar, um damit den Fortschritt der anschließenden Auswertung anzuzeigen ?

Bernhard Geyer 21. Aug 2007 17:01

Re: Laden eines größeren IXmldocument-keine Reaktion des Pro
 
Zitat:

Zitat von Fritzmaier
merke grade, daß ich mich ungenau ausgedrückt habe: Das eigentl. Laden dauert nicht so lange, sondern das anschließende Auswerten und Anzeigen in der treeview...

Arbeitest du mit BeginUpdate/EndUpdate. Kann die Sache ziemlich beschleunigen...


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