Einzelnen Beitrag anzeigen

grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#2

Re: StringGrid Speicher wieder freigeben

  Alt 29. Aug 2004, 22:30
hallo glunzl!

Zitat:
Ich speicher ca. 150.000 - 500.000 Datensätze aus einem File in einem StringGrid,

hast schon mal über die verwendung von 'richtigen' tabellen nachgedacht, denn eine halbe mio ist ja nicht grad wenig...

Zitat:
Dabei geht der Speicherverbrauch laut Taskmanager so an die 200 - 300MB.
na eben. bei einem stringgrid werden alle datensätze permanent in speicher gehalten, daher wird dein ram vollgefüllt. --> die verwendung von 'richtigen' tabellen löst dein problem

musst du immer alle 500.000 anzeigen? das kann sich ohnehin niemand ansehen, ohne dass ihm die augen einschlafen. wenn das prog nicht zeitkritisch ist, könntest du das file 'in teilen' laden - zb 1000 zeilen. wenn der user weiterscrollt, gibst du den speicherplatz frei und lädst die nächsten 1000 zeilen in den ram. ok, die lösung ist nicht grad die schnellste, aber hin & wieder muss auch zeit für kaffee sein

wie du selbst schon bemerkt hast, gibt
Zitat:
RowCont:= 1
nicht den ram frei, sondern verkleinert nur die anzeige des StringGrids (quelle: online-hilfe von delphi )

den speicher kannst du auf diese art leeren:
Delphi-Quellcode:
for i:= Grid.RowCount-2 downto 1 do
  Grid.Rows[i].Clear
nur bei 500.000 datensätzen bist du schneller, wenn du das StringGrid free'st und ein neues erstellst

mfg, stefan

ps: schau auch bei den schweizern vorbei, dort stehen jede menge tipps zum thema StringGrid , oder auch --> hier findest du allerhand wissenswertes zu diesem thema
  Mit Zitat antworten Zitat