AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

StringGrid Speicher wieder freigeben

Ein Thema von glunzl · begonnen am 28. Aug 2004 · letzter Beitrag vom 30. Aug 2004
Antwort Antwort
Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#1

StringGrid Speicher wieder freigeben

  Alt 28. Aug 2004, 22:53
Hallo!

Ich speicher ca. 150.000 - 500.000 Datensätze aus einem File in einem StringGrid, um sie später visuell darzustellen. Dabei geht der Speicherverbrauch laut Taskmanager so an die 200 - 300MB.
Wenn ich nun ein neues File in das selbe StringGrid lade, brauche ich die alten Daten nicht mehr und setzte RowCont auf 1. In der Hoffnung, das auch der Speicher freigegeben wird. Leider bleibt die Speicherbelegung immernoch bei ca. 200 - 300MB, selbst wenn ich anfange das neue File einzulesen. Wie kann ich denn den Speicher freigeben, ohne das Objekt zu zerstören?

Gruss
Michi
Michael
  Mit Zitat antworten Zitat
grayfox

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

Re: StringGrid Speicher wieder freigeben

  Alt 29. Aug 2004, 21: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
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#3

Re: StringGrid Speicher wieder freigeben

  Alt 29. Aug 2004, 23:29
500k spricht echt für ne richtige DB
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: StringGrid Speicher wieder freigeben

  Alt 29. Aug 2004, 23:41
Hi Michael!

Zitat von nailor:
500k spricht echt für ne richtige DB
Vielleicht will er aber auch von DB-Systemen unabhängig sein und verwendet deshalb noch dateien. Ich will nämlich auch nicht für jedes Programm eine Datenbank einrichten müssen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5

Re: StringGrid Speicher wieder freigeben

  Alt 29. Aug 2004, 23:50
wenn bei mir jedes 08/15 programm 500,000 datensätze generieren würde (und speichern) dann würde ich auch nen anfall bekommen --> muss was extraordinäres sein --> darf ne DB haben

so einfach ist das
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#6

Re: StringGrid Speicher wieder freigeben

  Alt 30. Aug 2004, 16:35
Hallo grayfox!
Zitat von grayfox:
hast schon mal über die verwendung von 'richtigen' tabellen nachgedacht, denn eine halbe mio ist ja nicht grad wenig...
Eine DB kommt leider nicht in Frage. Dau wird das Progi zu oft auf div. Rechnern eingesetzt. Oder gehen auch Tabellen ohne DB-Engine?

Zitat:
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
Das kann ich mir nochmal durch den Kopf gehen lassen. Danke für den Tipp!

Zitat:
den speicher kannst du auf diese art leeren:
for i:= Grid.RowCount-2 downto 1 do Grid.Rows[i].Clear
Danke, das werde ich als erstes mal probieren.

Gruss
Michi
Michael
  Mit Zitat antworten Zitat
Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#7

Re: StringGrid Speicher wieder freigeben

  Alt 30. Aug 2004, 16:39
Zitat von alcaeus:
Vielleicht will er aber auch von DB-Systemen unabhängig sein und verwendet deshalb noch dateien. Ich will nämlich auch nicht für jedes Programm eine Datenbank einrichten müssen.
alcaeus, genauso ist es

Gruss
Michael
Michael
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:44 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