Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zu wenig Arbeitsspeicher für diese Operation (https://www.delphipraxis.net/62064-zu-wenig-arbeitsspeicher-fuer-diese-operation.html)

DelphiAndreas 30. Jan 2006 15:17

Datenbank: DBase • Zugriff über: BDE

Zu wenig Arbeitsspeicher für diese Operation
 
Hallo,

ich greife mit der BDE und SQL auf eine DBase-Datenbank zu. Bei jeder SQL-Abfrage kann ich eine Erhöhung des vom Programm verbrauchten Speichers im TaskManager feststellen.
Lässt sich dieses irgendwie verhindern? Nach einer Weile erscheint dann nämlich der Fehler "Zu wenig Arbeitsspeicher für diese Operation" und an dieser Stelle muss man das Programm dann neu starten um weitermachen zu können.

Auch eine Erhöhung der einschlägigen Werte in der BDE-Verwaltung zögert das Problem nur hinaus :(

Gruß
Andreas

Luckie 30. Jan 2006 15:22

Re: Zu wenig Arbeitsspeicher für diese Operation
 
Kann man auch wieder nur raten: Werden irgendwelche Objekte nicht wieder freigegeben?

DelphiAndreas 30. Jan 2006 15:31

Re: Zu wenig Arbeitsspeicher für diese Operation
 
ich habs nochmal getestet, man brauch nur eine einfache form mit einem ttable, nem memo oder textfeld und einen button.

in die oncklick vom button schreibt man
Delphi-Quellcode:
sqlQuery.close;
sqlQuery.sql.text := memo1.text;
sqlQuery.execSQL
Wenn man das lädt, ne sql-anweisung einträgt und diese mehrmals nacheinander ausführt kann man eine stetige erhöhung des Speicherverbrauchs beobachten

Memo 30. Jan 2006 15:37

Re: Zu wenig Arbeitsspeicher für diese Operation
 
Delphi-Quellcode:
sqlQuery.sql.text := memo1.text;
Steckt da in Memo1.text eine Select-Abfrage?

//Edit
Zitat:

man brauch nur eine einfache form mit einem ttable, nem memo oder textfeld
Das kann wohl nicht so ganz stimmen, wenn ich mir Deinen QT anschaue. TTable<>sqlQuery.sql.text

DelphiAndreas 30. Jan 2006 15:38

Re: Zu wenig Arbeitsspeicher für diese Operation
 
so war das gedacht

Memo 30. Jan 2006 15:45

Re: Zu wenig Arbeitsspeicher für diese Operation
 
Zitat:

Zitat von DelphiAndreas
so war das gedacht

Dann schau mal in Deinen Windows-Temp-Ordner und wundere Dich warum da pro Abfrage eine neue Datei entsteht.
Für Select musst Du Open benutzen, dann sollte das Problem weg sein.

DelphiAndreas 30. Jan 2006 15:50

Re: Zu wenig Arbeitsspeicher für diese Operation
 
ahhhh :-) select - open, ja, über die vielen dateien habe ich mich schon gewundert :wall:

Zitat:

Zitat von Memo
Delphi-Quellcode:
sqlQuery.sql.text := memo1.text;
Steckt da in Memo1.text eine Select-Abfrage?

//Edit
Zitat:

man brauch nur eine einfache form mit einem ttable, nem memo oder textfeld
Das kann wohl nicht so ganz stimmen, wenn ich mir Deinen QT anschaue. TTable<>sqlQuery.sql.text

da war ich wohl ein bißchen schnell, meinte natürlich dbgrid

DelphiAndreas 30. Jan 2006 16:00

Re: Zu wenig Arbeitsspeicher für diese Operation
 
grandios: getestet und es geht :thumb: danke

DelphiAndreas 31. Jan 2006 07:36

Re: Zu wenig Arbeitsspeicher für diese Operation
 
jetzt hab ich aber nochmal ne frage:

bei SQL-Befehlen wie Insert oder Update muss ich doch ExecSQL nehmen. Kann man da auch irgendwie verhindern, dass für jede Abfrage der Speicherverbrauch steigt, bzw immer mehr der temporären Dateien angelegt werden?


Gruß
Andreas

r_kerber 31. Jan 2006 11:55

[team]
 
Zitat:

Zitat von DelphiAndreas
jetzt hab ich aber nochmal ne frage:

Neue Frage - Neuer Thread. Deshalb mache ich hier mal zu.

* * * C L O S E D * * *


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