Seite 1 von 2

Information hierarchisch strukturieren

Verfasst: 22.12.2008 21:24
von Ruskie
Servus,

Wie schon im Titel steht, versuch ich Daten baumförmig zu strukturieren, dass ich sie in etwa so verwenden kann:

Code: Alles auswählen

ÜbergeordnetesObjekt(x)\UntergeordnetesObjekt(y)\Eigenschaft(z) = blubb
Zunächst hab ich versucht eine LinkedList in einer Structure zu erstellen, was aber anscheinend nicht funktioniert. Statische Arrays kommen auch nicht in Frage, da ich sie nicht während der Laufzeit des Programms dimensionieren kann.

Weiß jemand hierfür eine Lösung, ohne allzu komplexe Umwege (z.B. eigene LinkedLists schreiben etc.) gehen zu müssen?

mfg Ruskie

Verfasst: 22.12.2008 21:46
von STARGÅTE
du kannst es zB so machen:

Code: Alles auswählen

Structure PointerField
 *Field.PointerField[0]
EndStructure


*MyTree.PointerField = AllocateMemory(12)

*MyTree\Field[1] = AllocateMemory(20)

*MyTree\Field[1]\Field[4] = AllocateMemory(12)

*MyTree\Field[1]\Field[4]\Field[0] = 1

Debug *MyTree\Field[1]\Field[4]\Field[0]
sieht vllt etwas schräg aus, aber der Trick ist halt, das du ein Null-Array in der Structure hast, welche mit AllocateMemory einen Speuicherbereich bekommt, sodass du "wie du es willst" in seiner größe ändern kannst, aber trotzdem auf die Indizes zugreifen kannst.

Das ganze ist dann noch sich selber erzeugend, sodass du Bäume erzeugen kannst.

Verfasst: 22.12.2008 22:09
von hjbremer
mal ne Frage ? woher weiß ich was ich bei AllocateMemory angeben muß

Verfasst: 22.12.2008 22:22
von STARGÅTE
ich habe hier einfach n Beispiel gemacht.

Ein Pointer hat unter 32Bit system 4 Byte also wäre mein Array mit 3 Feldern 12 Byte groß

muss es größer werden (oder auch kleiner) nutze ich ReAllocateMemory()

Re: Information hierarchisch strukturieren

Verfasst: 22.12.2008 23:31
von PMV
Es gibt hier im Forum auch schon eigene Linked Listen und sogar
Baumstrukturen. Einfach mal suchen :wink:

MFG PMV

Verfasst: 23.12.2008 00:37
von hjbremer
hier mal dein Code mit Kommentaren von mir

Habe ich das richtig verstanden ???

Code: Alles auswählen


Structure PointerField 
 *Field.PointerField[0] 
EndStructure 

*MyTree.PointerField = AllocateMemory(12)       ;für die folgenden 3 mytree * 4 = 12

*MyTree\Field[1] = AllocateMemory(20)           ;für field[4] = 5 * 4 = 20

*MyTree\Field[1]\Field[4] = AllocateMemory(12)  ;für field[0] = 8 Bytes zuviel bzw Platz für 0-2

*MyTree\Field[1]\Field[4]\Field[0] = 1 

Debug *MyTree\Field[1]\Field[4]\Field[0]


Re: Information hierarchisch strukturieren

Verfasst: 23.12.2008 00:48
von Kiffi
Ruskie hat geschrieben:Wie schon im Titel steht, versuch ich Daten baumförmig zu strukturieren, dass ich sie in etwa so verwenden kann:

Code: Alles auswählen

ÜbergeordnetesObjekt(x)\UntergeordnetesObjekt(y)\Eigenschaft(z) = blubb
dafür böte sich auch XML an ;-)

Code: Alles auswählen

SetXMLNodeText(XMLNodeFromPath(oXml,"UebergeordnetesObjekt[x]\UntergeordnetesObjekt[y]\Eigenschaft[z]"), "blubb")
Grüße ... Kiffi

Verfasst: 23.12.2008 00:48
von STARGÅTE
ja so ähnlich,

ich erzeuge halt Speicherbereich für "imaginäre" Arrays, ob die nun gefällt werden oder nicht ist erst mal egal, wichtig wäre nur dabei das auch wieder irgendwie zu löschen, sonst verliert man schnell seine Bereiche ...

Diese erzeugen von Memory erspart sozusagen das "vorher wissen" wie größ ein Statisches Array wird. also nur n Pointer auf eine weiteren Speicher erzuegen usw.

wie geasgt meinen Code nicht ganz ernst nehmen, in der Anwendung sieht das dann anders aus ...

Re: Information hierarchisch strukturieren

Verfasst: 23.12.2008 02:07
von ts-soft
Kiffi hat geschrieben:dafür böte sich auch XML an ;-)
Darauf wollte ich auch schon aufmerksam machen, habs aber sein gelassen,
da diese Möglichkeit meist ignoriert wird, obwohl es wohl das einfachste
wäre /:->

Verfasst: 23.12.2008 12:39
von Kaeru Gaman
Moin ts!
hast dich ja ne weile nich blicken lassen.
wo warstn?