AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Speicherauslastung einzelner Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherauslastung einzelner Komponenten

Ein Thema von erich.wanker · begonnen am 10. Mär 2010 · letzter Beitrag vom 11. Mär 2010
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

Speicherauslastung einzelner Komponenten

  Alt 10. Mär 2010, 12:50
Hallo Leute,

Delphi7
Zeos-LIB
Firebird 2.1
Reportbuilder
LMD-Tools

Allgemein:
...hab ein "Speicherproblem" (Out of memory) wenn ich meinen "Import/Export" durchführe...


Situation:
Mit 30 Query´s greife ich auf eine GDB zu..
Eine Query1 ist die "Hauptquery" und besitzt z.B.: 1000 Datensätze (wird bis zum EOF durchgearbeitet)
die restlichen Querys werden anhand Query1.afterScroll gefiltert...

Mit 30 weiteren Querys greif ich auf eine Kopie einer leeren GDB (gleiche Tables wie das Original) zu und schreib genau das, was die 30 anderen an Daten liefern..


Problem:
... man kann im Taskmanager zuschauen , wie die Speicherauslastung meiner Software kontinuierlich in die höhe geht ..
Wenn man wenig Exportier, gibt es keine Probleme...
Wenn man viel Exportier, kann sich das Programm aufhängen (kommt auf die Hardware an)...


Meine Frage:
Jetzt würd ich gern (betreffend Fehlersuche) feststellen, was für diesen kontinuierlichen Speicherzuwachs verantwortlich ist ...
hat jemand Ideen ??

Vielen Dank

Erich Wanker
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Speicherauslastung einzelner Komponenten

  Alt 11. Mär 2010, 17:36
Zitat von erich.wanker:
Mit 30 Query´s greife ich auf eine GDB zu..
Mit 30 weiteren Querys ...
Zwei Queries würden doch auch reichen.
Wenn du 30 Tabellen zu kopieren hast, dann kannst du doch jede Tabelle der Reihe nach kopieren.
Delphi-Quellcode:
// Quelltabelle öffnen
QuerySource.SQL.Text := 'SELECT * FROM '+tabellenname;
QuerySource.Open;
// Zieltabelle öffnen
QueryDest.SQL.Text := 'SELECT * FROM '+tabellenname + ' WHERE 0=1';
QueryDest.Open;
// Alle Datensätze kopieren
CopyDataSet(QuerySource, QueryDest);
Zum Kopieren aller Datensätze dient folgender Code:
Delphi-Quellcode:
procedure CopyDataSetRecord(Src,Dst: TDataSet; TagMask:Integer=0);
var
   i: Integer;
   fSrc,fDst: TField;
begin
   for i := 0 to Src.FieldCount-1 do
   begin
      fSrc := Src.Fields[i];
      fDst := Dst.FindField(fSrc.FieldName);

      // mit TagMask kann gezielt das Kopieren best. Felder verhindert werden
      // z.B. Autoinc-Felder
      if Assigned(fDst) and ((fSrc.Tag and TagMask)=0) then
      begin
         fDst.Value := fSrc.Value;
      end;
   end;
end;

procedure CopyDataSet(Src,Dst: TDataSet);
begin
   Src.First;
   while not Src.Eof do
   begin
      Dst.Append;
      try
         CopyDataSetRecord(Src,Dst);
         Dst.Post;
      except
         Dst.Cancel;
         raise;
      end;
      Src.Next;
   end;
end;
Damit hast du jetzt das Handwerkszeug zum Kopieren einzelner Tabelle.
Wichtig ist auch noch die Reihenfolge in der die Tabellen kopiert werden.
Zuerst die "Haupttabelle" kopieren und danach die abhängigen Tabellen.
Andreas
  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 04:38 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