![]() |
Datenstruktur 2D tabelle (gro
Hi,
ich möchte gern, under Delphi 6, eine relativ große Tabelle einlesen können, und im Speicher bearbeiten. Die Daten kommen meistens aus CSV, kann groß oder klein sein. Max größe währe so um die 1 mio Zeilen mal 70 Felder, aber könnte auch 3 Zeilen sein x 2 Felder. Ich muss die Felder per index abrufen können, zB "dataarray[Zeile, Spalte]" Meine Idee währe erstmals eine Dynamischer Array, also dataarray: array of array of widestring; Leider komme ich hier oft in Problem mit größenänderung. Ich habe auch versucht mit Synopse Bigtable ( ![]() Verwendet jemand das überhaupt ? Was machen andere die große Tabellen für instant Zugriff haben möchte ? Code folgt demnächst. |
AW: Datenstruktur 2D tabelle (gro
Delphi-Quellcode:
array{1..1000000} of array{1..70} of IrgendwasAlsPointer;
4*2+4*1.000.000 + (4*2+4*70)*1.000.000 + (4*2+stringleng)*1.000.000*70 jeweils Verwaltungsdaten + Arrayinhalt und ich nehm jetzt einfach mal durchschnittlich 20 Zeichen pro Wert 4.000.008 + 288.000.000 + 1.960.000.000 dazu kommt noch bissl Speicherausrichtung und Speicherfragmentierung Und schon sind deine 2 GB Arbeitsspeicher mehr als überfüllt. Fazit: Vergiss es das alles gleichzeitig im Arbeitsspeicher haben zu wollen. Sequentiell arbeiten oder auslagern (z.B. Datenbank) |
AW: Datenstruktur 2D tabelle (gro
Statt Array eine TStringList. Diese enthält als Strings die einzelnen Zeilen.
Beim Einlesen vorher SetCapacity verwenden, damit ausreichend Speicher am Stück reserviert wird. Erst beim Zugriff auf einen Spaltenwert die Zeile zerlegen, bzw. beim Schreiben neu zusammensetzen. |
AW: Datenstruktur 2D tabelle (gro
Zitat:
Oder falls es auf keinen Fall eine Datenbank sein soll, dann solltest Du einen File of Record oder noch älter eine Datei mit fixen Satzlängen. Da ist der Platzbedarf u.U. exorbitant. Eine weiter Möglichkeit wäre ein Format ähnlich dBase zuerst Indizes und dann die Daten. Aber ein richtige Datenbank würde ich auf jeden Fall vorziehen. Gruß K-H |
AW: Datenstruktur 2D tabelle (gro
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz