Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
15. Apr 2016
Sind schon recht dicht besetzt, ja. Dazu kommt, dass die Arrays später nicht aus Zeigern bestehen, sondern aus 2-Byte großen Words. Glaube nicht, dass da eine alternative Datenstruktur von der Größe her mithalten kann. Lasse mich aber gerne eines Besseren belehren :stupid:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
15. Apr 2016
Es trifft nicht auf alle Attribute zu, aber auf die meisten schon :| Wenn ich beispielsweise OBJ1 einlese:
OBJ1 = {A = 1, B = /, C = 1, D = 3, E = /}
Dann folge ich zuerst dem 1. Element in FilterA und stoße auf einen Filter vom Typ C. Jetzt weiß der Parser hierdurch implizit, dass das Objekt ein Attribut C haben MUSS und liest es aus dem Bytestream.
Nicht zwingend. A sollte immer das...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
15. Apr 2016
Das funktioniert leider nicht, da ich später ja immer nur ein Attribut nach dem anderen dekodieren kann. Bei dieser Vorgehensweise bräuchte ich aber ja mindestens schon Zwei :|
Das klingt vielversprechend :thumb: Werde ich die Tage mal versuchen zu implementieren.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
15. Apr 2016
Mein Fehler. Hätte von Anfang an besser den Begriff Array statt Tabelle verwendet (denkt man natürlich in dem Moment nicht dran, dass andere Leute Tabelle mit Datenbanken assoziieren werden).
Da die Struktur am Ende ziemlich groß ist, versuche ich die Datengröße zu verringern.
Da hast du Recht, allerdings gibt es in meinem speziellen Fall leider einige leere Knoten, die ich nicht ganz...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
14. Apr 2016
Meine momentane Vorgehensweise ist nach sorgfältiger Prüfung wirklich die einzig Mögliche.
Dein Vorschlag funktioniert aus folgendem Grund nicht:
Der fertige Filter ist eine Art Schablone zum Parsen von wieder anderen Daten. Diese Daten liegen aber in einem Format vor, bei dem ich nicht direkt zu Anfang alle Attribute auslesen kann. Die Art und Weise der Dekodierung hängt zum Einen von der...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
14. Apr 2016
Das mit den Kapazitäten hatte ich im ersten Post erwähnt, aber vielleicht nicht gut genug beschrieben. Denk mal kurz nicht an den Baum, sondern nimm die Filter als 1-dimensionale Tabellen (das sind sie in der Implementierung tatsächlich). Attribut A beispielsweise ist ein Byte. Der dazugehörige FilterA ist ein statisches Array mit 256 Elementen. Attribut B ist ein Enum mit 3 Werten. FilterB ist...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
14. Apr 2016
Dein zweiter Baum ist nicht ganz korrekt, da OBJ1 ja einen anderen Wert für A hat, als OBJ2 und OBJ3. OBJ1 kannst du in der Betrachtung aber auch vorerst mal ausblenden, da das Problem in meinem Beispiel vorerst nur den Ast A = 54 betrifft.
Der dritte Baum ist prinzipiell korrekt (da ist nur die 004 etwas verrutscht :stupid:). Tatsächlich hat jeder Filter in meiner Implementation ein...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Zacherl,
13. Apr 2016
Hallo zusammen,
ich habe eine Menge von Objekten, welche alle die Eigenschaft A besitzen. Zudem kann jedes Objekt optional noch die Eigenschaften B, C, D und E definieren. Alle diese Eigenschaften geben den Index in einer dazugehörigen Filter-Tabelle an.
Die Filter-Tabellen haben unterschiedliche Kapazitäten:
A = 256
B = 3
C = 5
D = 5
E = 4