Problem mit verschachtelten Types
Übersicht

![]() |
SpikespineBetreff: Problem mit verschachtelten Types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Abend,
mich würde sehr interessieren, wie man folgendes Problem lösen könnte: Es gibt eine Gruppe mit Objekten unbestimmter Anzahl. Wunderbar, da kann man ja auf Types zurückgreifen. Den einzelnen Objekten untergeordnet sollen sich wiederum Objekte unbestimmter Anzahl befinden. Da dacht ich mir doch gleich: Code: [AUSKLAPPEN] Type tObjekt
Field x, y, z Field uo.tUnterObjekt End Type Type tUnterObjekt Field bla, blubb End Type Soweit finde ich das auch ganz Klasse, ich kann jetzt zu jedem tObjekt beliebig viele tUnterObjekte erstellen. Mein Problem ist aber: wie kann ich gezielt den übergeordneten Objekten untergeordnete Instanzen zuweisen und anschließend für ein bestimmtes Objekt alle ihm untergeordneten Instanzen ansprechen? Eine Ideallösung wäre, mit einer For-Each-Schleife alle übergeordneten Objekte durchzugehen und dann darin verschachtelt mit einer anderen Schleife die zugehörigen Unterobjekte anzusprechen. Allerdings kann ich DAFÜR dann leider keine For-Each Schleife verwenden, weil dann alle verfügbaren Instanzen durchgegangen würden, und das will ich nicht. Ich hoffe, das Problem ist klar. |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
mit einer for each schleife ist das nicht gut möglich
mit einer while wend, schon eher was hällst du davon: Code: [AUSKLAPPEN] type bla field x,y field s.bla end type so hat jedes objekt ein unterobjekt, was wieder ein unterobjekt haben kann, was wieder ein unterobjekt haben kann ... hoffe, das hilft |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo, ![]() ich glaube ich habe mein Problem etwas kompliziert geschildert ![]() Hier mal eine "grafische" Veranschaulichung: Code: [AUSKLAPPEN] a
1 2 3 b 4 5 c 6 7 Die Buchstaben sind Instanzen eines Types, die Ziffern sind Instanzen eines Untergeordneten Types. Mit einer For-Each Schleife kann ich ja die verschiedenen Buchstaben durchgehen. Ich möchte nun erreichen, dass ich für die Instanz a die Unter-Instanzen 1-3 durchgehen kann, für die Instanz b die Instanzen 4 und 5 usw. Mir ist momentan nicht klar, wie ich das anstellen könnte, mir fehlt wohl eine entscheidene Idee. @StepTiger: jop aber ich möchte den Unterobjekten nicht unbedingt die gleichen Eigenschaften wie den Übergeordneten geben. Und kannst du das mit ner while-wend schleife mal konkretisieren, ich komme grad nicht drauf wie ich das damit anstellen könnte ![]() aber trotzdem thx ![]() |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
da hast Du recht schlechte Karten, da BB alle typeinstanzen in einer globalen Liste verwaltet. Du könntest Dir allenfalls mit einer Bank behelfen, in welcher Du die untergeordneten Einträge speicherst.
Dem übergeordneten Type gibst Du dann die Startposition des ersten untergeordneten Eintrages auf den Weg. Nun gibt es 2 Möglichkeiten: 1. Die Bank ist streng linear angelegt, dann gibst du noch die Anzahl auszulesender Elemente an. Das ist zwar simpel im auslesen aber schwer in der Wartung, wenn sich bei einem der ersten Elemente etwas ändert musst Du unter Umständen grosse Teile der Bank verschieben. 2. Jeder Bankeintrag enthält neben dem Eintrag einen Zeiger auf den nächsten Bankeintrag (oder zB -1 wenn die Liste zu Ende ist.) Das ergibt dann ne simple one-way-verkettung. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey danke BladeRunner.
Ich werd mal versuchen, mir das mit ner Bank zurechtzubasteln. |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was steptiger mit seinem Posting eigentlich meinte ist folgendes (auf basis deines codes)
Code: [AUSKLAPPEN] Type tObjekt Field x, y, z Field uo.tUnterObjekt End Type Type tUnterObjekt Field bla, blubb field next.tUnterObjekt End Type zb würdest du bei deiner gewünschten hierarchie a.tObjekt, b.tObjekt, c.tObjekt machen Dann das "1", "1"\next wäre "2" und "2"\next wäre "3" und das gleiche für die Unterobjekte von b und c Danach kannst du einfach mit "while temp.tUnterObjekt\next <> null ; tue irgendwas : temp = temp\next" durch die unterobjekte eines bestimmten Objektes durchgehen ohne das du alle Unterobjekte durchgehen musst. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo....
das mit den Types in Typs ist nicht besonders komfortabel. Jede Type declaration wird in ein und der selben Liste gehalten. Daraus ergibt sich das problem das bei der abarbeitung dur Each ... das gesamte Type Feld durchgegangen wird. Wenn du Types in Types verwenden wilst. Must du mit verketteten Listen arbeiten. Bei kleinen Projecten ist das noch nicht so grawierend. Aber bei grösseren ist es echt umständlich . Das Tutorial das bei der Deutschen Hilfe dabei ist ist echt gut. Liss es dir mal durch. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier gibts noch zwei andere Lösungsansätze:
https://www.blitzforum.de/foru...hp?t=14903 |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group