Hi! Martin Hofius wrote:
Am Sonntag, 12. Juli 2009 schrieb Thomas Hertweck:
[...] struct data { double xcoordinate; double ycoordinate; int counter; float attribute; }; Das sieht sehr übersichtlich aus - ich vermute aber, dass das im realen Programm etwas länger ist?
Korrekt. Insgesamt handelt es sich um ca. 200 bis 500 Byte pro struct, ca. 40 bis 100 Variable. Das kann aber variieren.
[...] Ich denke, dazu fehlen einfach noch ein paar Informationen. Sind die Datentypen fest an die einzelnen Variablen gekoppelt oder wechseln die auch? (z.B. xccordinate mal als double, mal als int)
Die Typen und Namen der Variablen koennen fuer dieses Problem glaube ich als statisch angenommen werden. Insofern variiert hier primaer die Position (byte offset) und die Anzahl der Variablen.
Wenn die fest wären, könntest Du die Daten in einen Speicherbereich einlesen und in dem struct die Variablen als Pointer deklarieren, die Du dann entsprechend dem Aufbau in der Datei passend auf die einzelnen Bestandteile setzt.
Ich habe allerdings keine feste Anzahl von Variablen. Wie oben angedeutet kann je nach Format der Datei die Anzahl variieren.
Oder: Wieviele Kombinationen gibt es für die Reihenfolge der Variablen? Du könntest verschiedene struct definieren und dann passend casten. Passt natürlich nur für eine kleine Menge an Kombinationen und auch nur dann, wenn es Dir sowohl beim Lesen aus der Datei wie auch beim Zugriff auf Performance ankommt.
Ne, Kombination bilden ist nicht moeglich bei 80 Variablen oder so ;-) Performance spielt eine recht grosse Rolle. Wie gesagt, ich habe eine Loesung ueber einen Dictionary (Lookup Table), die scheint zu funktionieren. Ich weiss nur nicht, ob sie wirklich elegant und schnell ist oder ob es etwas besseres gibt. Sorry, ich kann das Problem momentan nur relativ abstrakt beschreiben, ich hoffe, es ist trotzdem einigermassen verstaendlich, was ich erreichen will. Gruesse, Thomas -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org