AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

Ein Thema von nobby · begonnen am 11. Nov 2008 · letzter Beitrag vom 11. Nov 2008
Antwort Antwort
nobby

Registriert seit: 1. Sep 2004
12 Beiträge
 
#1

StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 07:58
Hallo

Ich versuche ein StringGrid mit Daten zu füllen. Ab einer bestimmten Anzahl Zeilen bekomme ich eine EAccessViolation. Die Begrenzung scheint bei ca. 1 Mio. rows zu liegen (1024 * 1024). Hat jemand eine Ahnung, ob man diese Begrenzung umgehen kann? Ich habe ca. 4 Mio. Datensätze zum laden.

Code:
procedure TForm2.Button1Click(Sender: TObject);
const
  ROW_LIM = 1024 * 1024;
var
  i: Integer;
begin
  StringGrid1.RowCount := ROW_LIM + StringGrid1.FixedRows;
  Label1.Caption := 'Row count: ' + IntToStr(StringGrid1.RowCount);
  Application.ProcessMessages;
 
  try
    for i := StringGrid1.FixedRows to ROW_LIM do
      StringGrid1.Cells[0, i] := IntToStr(i);
  except
    on E: Exception do Label1.Caption := E.Message + ' at row ' + IntToStr(i);
  end;
end;
Besten Dank für jegliche Hinweise,
Nobby
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:00
Ich würde mir eher Gedanken machen, ob es sinnvoll ist 4Mio Datensätze in ein Grid zu laden
Markus Kinzler
  Mit Zitat antworten Zitat
nobby

Registriert seit: 1. Sep 2004
12 Beiträge
 
#3

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:03
Was gibe es denn für Alternativen?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:13
Moin, Moin.
Datenhaltung in separater Liste, Grid nur für die Darstellung der (sichtbaren) Daten verwenden.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:14
Ich kann nur mkinzler zustimmen. 1 Mio. Datensätze wird sich niemand anschauen.

Zu deinem Problem. Falls du eine ältere Delphi-Version hast würde ich mal FastMM einbinden, da der alte MemoryManager gerne unter Speicherfragmentierung leitet (Falls es nicht die 2GB-Grenze von 32-Bit-Prozessen erreicht wird). Ansonsten gibt es die möglichkeit mittels virtuellen Modus z.B. TListView zu nehmen (Virtual Listview-Beispiel von Delphi) oder TElTreeView (Elpack) oder Virtual TreeView zu verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nobby

Registriert seit: 1. Sep 2004
12 Beiträge
 
#6

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:27
Natürlich schaut sich keiner ALLE Datensätze an, aber der Benutzer sollte gewisse Datenbereiche (Zeit von...bis) einsehen können und dann markieren und weiterverarbeiten. Die Daten stammen von eine Accessdatei (.mdb). Mit Access sehe ich die Daten in ein paar Sekunden und kann sehr schnell in die Mitte oder zum Ende scrollen. Das kann ich mit einem DBGrid auch, also denke ich kaum, dass ich in welche Hardwarebegrenzungen laufe. Wenn ich madExcept einschalte, kann ich den Fehler in der Unit Grids.pas in der function MakeAt lokalisieren. Dort wird ein TSparsePointerArray verwendet, welches so definiert ist: PointerArray = array [0..512*1024*1024 - 2] of Pointer; Scheint mir so, als ob dort die Begrenzung herkommt.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:34
Ist es nicht egal, wo die Begrenzung liegt?
Ich würde schon ab wenigen hundert Datensätzen das StrinGrid nicht mehr für die Datenhaltung verwenden!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.533 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:37
Ich würde TStringGrid überhaupt nicht verwenden
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#9

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 08:53
Oooch Detlef, diese wunderschöne Komponente,
das ist jetzt aber gemein von dir
Ralph
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#10

Re: StringGrid Begrenzung bei ca. 1 Mio Zeilen ?

  Alt 11. Nov 2008, 09:36
Das Stringgrid der VCL von D7 verwendet in den TStringGridstrings soweit ich weiß einen auf
Geschwindigkeit ausgelegten Hack um Speicher zu allokieren.
Konkret verwndet es Anstelle von Getmem was ja Heapspeicher bereitstellt und evtl. von Windows anfordert,
Speicher aus dem Stacksegment der Anwendung.

Daher würde ich auf so aktionenen wie einige Mio Datensätze ins Gitter zu laden verzichten und nur das laden
was gerade Sichtbar sein soll....
Evtl mal über die Verwendung einer Datenbank nachdenken.
Andreas
Monads? Wtf are Monads?
  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 09:03 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