Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TClientDataSet sehr langsam (https://www.delphipraxis.net/71044-tclientdataset-sehr-langsam.html)

Pravljica 8. Jun 2006 00:23


TClientDataSet sehr langsam
 
Halo,

Ich habe ein TClientDataSet, der mit TDBGrid verbunden ist. Ich habe auch einen Button, mit dem ich ClientDataSet in eine XML Datei speicher. Aber das geht sehr langsam, fur 500 Zeilen dauert es zirka 5 Sekunden.
Es geht so:
Delphi-Quellcode:
while not ClientDataSet1.eof do
begin
  ClientDataSet1.Next;
end;
Es ist noch mehr Code in dieser while schleife, aber auch das ist langsam. Kann Ich dass irgendwie schneller machen?

Danke

mkinzler 8. Jun 2006 05:25

Re: TClientDataSet sehr langsam
 
Die Erzeugung einer XML-Datei dauert nunmal ein Weilchen. Ich finde hierfür 5 Sekunden nicht als lang.

marabu 8. Jun 2006 06:17

Re: TClientDataSet sehr langsam
 
Hallo Simon,

fünf Sekunden für das Schreiben für 500 records? Das müssen schon sehr komplexe Strukturen sein. Allerdings verstehe ich nicht, was das mit deiner Iteration über die Zeile im ClientDataSet zu tun haben soll. Was machst du in dieser Schleife? Als XML-Dokument weggeschrieben werden deine Daten doch mit der Methode ApplyUpdates() von ClientDataSet. Wie groß wird das resultierende XML-Dokument denn?

Grüße vom marabu

Pravljica 8. Jun 2006 06:41

Re: TClientDataSet sehr langsam
 
Hallo,

Ich muss alle records in dieser Schleife uberprufen und dann kann Ich sie speichern mit ApplyUpdates. Aber fur diesen versuch habe Ich dass ales ins Komentare getan. In der Schleife ist nur ClientDataSet1.Next.
Vielleicht liegt es darauf, das dieser ClientDataSet mit DBGrid verbunden ist - Ich kann sehen wie sich der Kursor in DBGrid durch Zeilen bewegt.

marabu 8. Jun 2006 06:52

Re: TClientDataSet sehr langsam
 
Du solltest vor dem Eintritt in deine Prüfschleife die Methode DisableControls und anschließend die Methode EnableControls des ClientDataSet aufrufen. Auch solltest du prüfen, ob nicht irgendwelche Ereignis-Routinen an ClientDataSet unnötig aktiv sind, während du durch die Zeilen iterierst.

marabu

Pravljica 8. Jun 2006 07:00

Re: TClientDataSet sehr langsam
 
DisableControls und am Ende EnableControls - das habe Ich gesucht.

Danke :)


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