![]() |
Mein Array ist explodiert
Hallo Forum,
ich muss an einem bestehendem Delphi-Programm eine Änderung vornehmen, obwohl ich von Progammieren und insbesondere Delphi nur 0,001 Ahnung habe. Und hier das Problem: Wir wollen eine Tabelle mit fast 200 Mio Zeilen und rund 30 Spalten auswerten. Die Spalten enthalten Merkmale wie z. B. Alter, Geschlecht, Schuhgröße... mit je 2, 3, 4 oder auch mal 20 Merkmalsausprägungen (z. B. Alter kann M oder W sein). Bisher wird ein riesen Array gebildet, der alle erdenklichen Merkmalskombinationen enthällt; in der letzten Spalte wird dann hochgezählt, wie oft genau eine bestimmte Kombination vorgekommen ist. Will man nicht alle Merkmale auswerten, ist der Array kleiner als die Ausgangstabelle. Will man alle Merkmale auswerten, wird der Array zu groß. Daher die Idee, die Daten in einer Baumstruktur abzubilden. Damit soll erreicht werden, dass kein Speicherplatz für Merkmalskombinationen reserviert wird, die es gar nicht gibt. Gibt es dafür fertige Lösungen? Ich versuche gerade Klassenprogrammierung zu verstehen. Kann ich soetwas mit Klassen abbilden und wenn ja wie denn? Gruß Boris |
Re: Mein Array ist explodiert
Schmeiße den definitiv benötigten Kram in eine verkettete Liste und Ruhe ist.
|
Re: Mein Array ist explodiert
Meinst du TList oder was? Kann ein Listenelement mehr als einen Nachfolger haben?
|
Re: Mein Array ist explodiert
TStringlist müßte auch gehen. Vermute aber mal, es geht zu langsam bei der Menge oder es wird zuviel Ballast mit rumgeschleppt. Die Frage ist aber zu unpräzise gestellt. Ich verstehe nur nicht was Du genau vor hast. Was heißt : mehr als ein Nachfolger ? :shock: Der Titel ist übrigens echt Klasse. Welche Fehlermeldung kommt denn, wenn das Array explodiert ? :lol:
|
Re: Mein Array ist explodiert
Wenn es keine Mädchen gäbe die rauchen, bräuchte ich doch keinen Speicher dafür reservieren, wie ich es beim Array tue:
Also könnte ich das doch in einem Baum abbilden, oder ist das blöd? Baum: Geschlecht-> Raucherstatus-> Anzahl /////////////Raucher 5 M \\\\\\\\\\\\\Nichtraucher 2 W \\\\\\\\\\\\\Nichtraucher 7 Array: M Raucher 5 M Nichtraucher 2 W Raucher 0 W Nichtraucher 7 |
Re: Mein Array ist explodiert
Ich frage jetzt mal ganz naiv:
Du redest von einer Tabelle mit 200 Mio Zeilen. Ich gehe doch mal davon aus, dass es sich um eine Datenbank-Tabelle handelt, oder? Falls das so ist, warum macht ihr keine geschickten Datenbankabfragen? Falls nicht, ist das Konzept vielleicht falsch? Davon sagst du nämlich nichts. Darum die naive Frage. |
Re: Mein Array ist explodiert
Für die Zukunft ist das auch geplant, die Tabelle in einer Datenbank auswerten zu lassen. Es werden aber nicht nur einfach irgendwelche Abfragen mit dem Delphi-Programm durchgeführt, sondern die Datensätze werden einzeln vorher noch auf Plausibilität geprüft. Das geht mit SQL glaube nicht so einfach. Außerdem liegen die Rohdaten in vielen verteilten Textdateien vor, die vom Programm zusammengesucht werden.
|
Re: Mein Array ist explodiert
[OT]
Zitat:
[/OT] Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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-2025 by Thomas Breitkreuz