Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TClientDataSet - Systemressourcen Erschöpft (https://www.delphipraxis.net/151091-tclientdataset-systemressourcen-erschoepft.html)

SonicTTH 5. Mai 2010 16:24

Datenbank: XML • Zugriff über: ClientDataSet

TClientDataSet - Systemressourcen Erschöpft
 
Hallo,

Ich habe ein kleines Programm geschrieben, mit dem man Tagebuch führen kann. Die Einträge werden mit ID (Integer), Datum (TDateTime), Titel (String) und Inhalt (Memo) erfasst und per TClientDataSet in eine XML Datei geschrieben. Das Funktioniert soweit sehr gut. Ich habe nun ein paar tests durchgeführt, für welche ich ein extra tool geschrieben habe, dass mir eine solche tabelle mit zufälligem inhalt (Memo) von ca 2000 zeichen pro datensatz generiert. Ich habe damit eine Tabelle mit insgesamt 10.000 Datensätzen generiert; Daraus resultierte eine ca 35 MB große xml datei. Wenn ich diese datei nun in mein Tagebuch-Programm lade und einen der datensätze aufrufe erhalte ich die meldung "Systemressourcen Erschöpft".

Ein nebeneffekt dieser Meldung ist, dass das Navigationspanel meines programms keine grafiken (hintergrundgrafik + icons) mehr anzeigt und ich somit, sobald diese meldung aufgetaucht ist, den Prozess töten muss.

Ich habe bereits dieses Forum durchsucht und bin auch auf Threads, in denen es um diese Fehlermeldung geht, gestoßen. Allerdings bezieht sich keiner von diesen auf das TClientDataSet. Da dieser Fehler jedoch erst bei einem Test mit der Verwendung einer Tabelle in solchen größenordnungen aufgetreten ist, vermute ich, dass es da einen Zusammenhang gibt.

Ich verwende Delphi 6 Enterprise.
Ausser dem TClientDataSet verwende ich die "besonderen" Komponenten
TShellTreeView und TImage (Mit *.ico Dateien als Buttons).

Könnt Ihr mir sagen womit genau dieser Fehler zusammenhängt und wie ich ihn behandeln könnte? Wäre es evtl besser statt dem xml format lieber z.b. ADO zu verwenden?

kamel08 5. Mai 2010 18:04

Re: TClientDataSet - Systemressourcen Erschöpft
 
versuch mal folgendes
ClientDataSet.Filename := 'Test.cds';
ClientDataSet.SaveToFile(ClientDataSet.FileName, dfBinary); // als *.cds - Datei speichern

SonicTTH 5. Mai 2010 18:50

Re: TClientDataSet - Systemressourcen Erschöpft
 
Ich probiers mal aus.

Muss ich denn vom ClientDataSet die option FileName verwenden? Ich hab das eigentlich nie gemacht. Das einzige was ich auf die datei an sich bezogen damit mache ist LoadFromFile und SaveToFile...

Kannst du mir mal sagen was das bringen sollte bitte?

SonicTTH 5. Mai 2010 21:26

Re: TClientDataSet - Systemressourcen Erschöpft
 
Es sei angemerkt: Ich hab das jetzt noch nicht versucht mit der dateiendung *.cds und der zuweisung der aktuellen datei auf die eigenschaft "FileName" des TClientDataSet, trotzdem funktionierts auf einmal... Also ich kann die datenbank durchsuchen und einträge aufrufen ohne probleme, und das auch super schnell mit nicht merkbarer verzögerung zwischen den klicks der kategorien...

Das is iwie scheiße mit sonem sporadischen fehler...

/edit: Ich habe bei einem weiteren test (Datenbank öffnen bzw. "laden") die meldung "Ungültiger Handle" erhalten... Ich hab keine ahnung woher das kommen könnte.

Bitte helft mir :)

kamel08 6. Mai 2010 14:51

Re: TClientDataSet - Systemressourcen Erschöpft
 
Zitat:

Zitat von SonicTTH

Kannst du mir mal sagen was das bringen sollte bitte?

Klar, also die Zuweisung
ClientDataSet.Filename := 'Test.cds'; könnte man verwenden, muß man aber nicht und sollte nur ein Vorschlag sein.

Wichtig ist, dass die Endung _nicht_ *.xml ist
und die Anweisung
ClientDataSet.SaveToFile(ClientDataSet.FileName, dfBinary);

das _ dfBinary _ beinhaltet, dann sollte eine Binärdatei entstehen.
Schneller und kleiner als XML. Vielleicht findet man dann noch die anderen Fehler,
aber ohne einen code-ausschnitt zu sehen, ist das schwierig.
MfG


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