AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenstruktur 2D tabelle (gro

Ein Thema von myicq · begonnen am 19. Mär 2018 · letzter Beitrag vom 21. Mär 2018
Antwort Antwort
myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#1

Datenstruktur 2D tabelle (gro

  Alt 19. Mär 2018, 17:31
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 (http://blog.synopse.info/tag/BigTable), kann aber kein einfaches Beispiel finden.
Verwendet jemand das überhaupt ?

Was machen andere die große Tabellen für instant Zugriff haben möchte ?

Code folgt demnächst.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenstruktur 2D tabelle (gro

  Alt 19. Mär 2018, 18:43
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (19. Mär 2018 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datenstruktur 2D tabelle (gro

  Alt 21. Mär 2018, 14:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Datenstruktur 2D tabelle (gro

  Alt 21. Mär 2018, 22:08
..oder auslagern (z.B. Datenbank)


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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Datenstruktur 2D tabelle (gro

  Alt 21. Mär 2018, 22:27
Code folgt demnächst.
Ich bin gespannt wie ein Flitzebogen!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:54 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