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