Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [BDS 2006] Schließen einer Anwendung mit einem StringGrid da (https://www.delphipraxis.net/124884-%5Bbds-2006%5D-schliessen-einer-anwendung-mit-einem-stringgrid-da.html)

Chemiker 26. Nov 2008 20:59


[BDS 2006] Schließen einer Anwendung mit einem StringGrid da
 
Hallo,

ich habe auf einem Form ein StringGrid und befüllen es mit Daten für Testzwecke.
Wenn ich anschließend das Form schließe, dann dauert es eine Ewigkeit bis die Applikation aus dem Taskmanger verschwunden ist. Der Speicherverbrauch steigt stetig an und die BDS 2006 wird nicht freigegeben. Woran kann das liegen?

Delphi-Quellcode:
procedure TForm3.btnSGmitDatenFuellenClick(Sender: TObject);
var
  iSpalte,
  iZeile: Integer;
  iTemp: Integer;
  iSpAnzahl: Integer;
  iZeAnzahl: Integer;
begin
  StringGrid.DefaultColWidth:= 150;
  iSpAnzahl:= 255+1;
  iZeAnzahl:= 65535+1;  
  StringGrid.ColCount:= StringGrid.ColCount+iSpAnzahl;
  StringGrid.RowCount:= StringGrid.RowCount+iZeAnzahl;
  iSpalte:= 0;
  iZeile:= 0;
  for iSpalte := 2 to iSpAnzahl do
  begin
    for iZeile := 2 to iZeAnzahl do
    begin

    StringGrid.Cells[iSpalte,iZeile]:= 'Zeile: '+intToStr(iZeile)+' '+
                                       'Spalte: '+inttoStr(iSpalte);
   end;
  end;
end;
Bis bald Chemiker

mkinzler 26. Nov 2008 21:04

Re: [BDS 2006] Schließen einer Anwendung mit einem StringGri
 
Es bleibt auch ein Berg Datenmüll übrig

Chemiker 26. Nov 2008 21:24

Re: [BDS 2006] Schließen einer Anwendung mit einem StringGri
 
Hallo mkinzler,

verstehe ich nicht? Wo bleibt Datenmüll über?


Bis bald Chemiker

mkinzler 26. Nov 2008 21:26

Re: [BDS 2006] Schließen einer Anwendung mit einem StringGri
 
65537 Zeilen a 256 Spalten ist ne Menge Holz, welches am Ende entsorgt werden muss

Daniel 26. Nov 2008 21:28

Re: [BDS 2006] Schließen einer Anwendung mit einem StringGri
 
Ich habe seit Wochenbeginn auch wieder mal mit Grids zutun (erst AdvGrid, dann doch wieder StringGrid) und intern ist das StringGrid sehr trivial aufgebaut und arbeitet mit einfachen Listen / Arrays, die bei solchen Größenordnungen an ihre Performance-Grenzen stoßen. Schaue Dir mal die Datei Grids.pas an - es ist fast überraschend, mit wie wenig Code man da ausgekommen ist.

Chemiker 26. Nov 2008 21:52

Re: [BDS 2006] Schließen einer Anwendung mit einem StringGri
 
Hallo Daniel, mkinzler,

Trotzdem, finde ich schon merkwürdig.
Die Erstellung dauert ca. 40sek., nach dem Schließen des Forms dauert es 18 min. bis die Applikation aus dem Taskmanger verschwunden ist, dabei steigt der Speicher kontinuierlich auf ca. das 3,5-fache um dann wieder langsam niedriger zu werden.

Bis bald Chemiker

Chemiker 27. Nov 2008 06:44

Re: [BDS 2006] Schließen einer Anwendung mit einem StringGri
 
Hallo,

ich habe mal mit verschieden Spaltenanzahlen gespielt und dabei die Zeit gemessen für die Erstellung und das komplette Entfernen der Applikation.
Dabei sind folgende Werte zum Beispiel rausgekommen:

Delphi-Quellcode:
iSpAnzahl:= 200+1;
iZeAnzahl:= 65535+1;
Für diese Konstellation, werden ca.30 sek. für die Erstellung gebraucht und für das Entfernen aus dem Speicher vergehen mal grade ca.8 sek.

Es scheint so, als wenn nicht das StringGrid das Problem hat sondern XP, weil je mehr Virtueller Speicher benötigt wird, je langsamer geht das komplette Entfernen aus dem Speicher.

Bis bald Chemiker


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