Seite 1 von 1
struct in struct [Erledigt]
Verfasst: 04.04.2013 17:04
von computerfreak
Hallo ,
würde mich mal interresieren , wie man sowas irgendwie anders lösen kann :
Code: Alles auswählen
Structure item
item.item[100]
integer.i
EndStructure
Structure tree
items.item[100]
x.i
...
EndStructure
^^ Das gibt nämlich eine Fehlermeldung wegen endloser rekursivität.
Sinn davon wäre eine Baumstruktur , mit theoretisch unendlichen "subitemstufen"
(also wie ein treeGadget als struktur

)
Danke schonmal
Re: struct in struct
Verfasst: 04.04.2013 17:22
von STARGÅTE
zB mit einer Liste:
Code: Alles auswählen
Structure TreeElement
List Child.TreeElement()
Integer.i
String.s
EndStructure
Define Tree.TreeElement
AddElement(Tree\Child())
AddElement(Tree\Child()\Child())
Tree\Child()\Child()\String = "Hallo Welt"
Re: struct in struct
Verfasst: 04.04.2013 17:23
von NicTheQuick
Das geht ganz gut mit LinkedLists:
Code: Alles auswählen
Structure item
List childList.item()
integer.i
EndStructure
Structure tree
root.item
x.i
;...
EndStructure
Define tree.tree
Debug "Root item: " + tree\root\integer
Debug "Children: " + ListSize(tree\root\childList())
Debug "Adding 10 children"
Define i.i
For i = 1 To 10
If AddElement(tree\root\childList())
tree\root\childList()\integer = i * 10
EndIf
Next
Debug "Adding 2 subchilds to all 10 children"
ForEach tree\root\childList()
Define *item.item = @tree\root\childList()
For i = 1 To 2
If AddElement(*item\childList())
*item\childList()\integer = *item\integer + i
EndIf
Next
Next
Procedure IterateOverTree(*item.item, level.i = 0)
Debug RSet("", level + 1, "+") + *item\integer
If (ListSize(*item\childList()) > 0)
ForEach *item\childList()
IterateOverTree(@*item\childList(), level + 1)
Next
EndIf
EndProcedure
Debug "Iterate over the tree"
IterateOverTree(@tree\root)
Edit:
Da war Stargate mal wieder schneller.

Re: struct in struct
Verfasst: 04.04.2013 17:25
von computerfreak
vielen Dank.
Genau sowas hab ich gesucht !
