Linked List

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

girgl

Betreff: Linked List

BeitragSa, Jan 24, 2004 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,ich will mit einer Linked List arbeiten und hab folgenden Typen
Code: [AUSKLAPPEN]

Type bla
field x,y
field test.test
end type

type test
field muh$
end type


wie kann ich jetz alle objekte des types abfragen mit for each?

TheShadow

Moderator

BeitragSa, Jan 24, 2004 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
field test.test

kann nur zu einem Objekt linken - so ähnlich wie ein Link in HTML - du kannst nicht ein Link zu 10 Objekten setzen

Dadurch erübrigt sich die Abfrage mit for/each

Wenn du mehrere Objekte zuweisen willst, dann musst du entw. BLITZARRAYS benutzen oder Banks (und dort handles speichern)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Arcanes

BeitragSa, Jan 24, 2004 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich kannst Du mit for each jetzt alle Objekte der Types abfragen, warum sollte das plötzlich nicht mehr gehen?

Aber wenn Du nur alle Test-Typen zugehörig zum bla-Type abfragen willst (mal vorausgesetzt, es soll möglich sein, mehrere Test-Typen einem bla-Type zuzuordnen), dann musst Du entweder:

a) bla\test als Array erstellen. Also bspw. --> field test.test[10], dann könntest Du bis zu 11 Test-Typen einem Bla-Type zuordnen!

oder:

b) dem test-Type ein Bla-Type-Handle verpassen. Zb.: Field bla_handle.bla (oder wie ich es immer mache: parent.bla). Dann kannste mit 'ner For Each auch alle test-Types in abhängigkeit eines Bla-Parents auswählen ^^



Oder hattest Du was anderes mit Deiner Frage gemeint? Rolling Eyes
tHey pUt mE iN a rOuNd rOom tO diE
User posted image
http://www.myownmalice.de.vu
 

girgl

BeitragSa, Jan 24, 2004 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich denke das swas du mit zweiterer variante meinst,mit dem parent sollte das sein was ich brauche.
den est-type könnte man z.B,. vergleichen mit type firma und der bla-type wäre dann mitglied.
Dann möcht ich halt das man das so abfragen kann

Code: [AUSKLAPPEN]

type firma
field soundso
field mitglied.mitglied
end type

type mitglied
field name$
...
end type

for firma\mitglied.mitglied=each mitglied <--- Fehler
 tu das und das
next


das problem is das in der zeile immer ein fehler auftaucht,dass ein next oder sonstiges fehlt.Ich würd gern wissen,wie ich die for each schleife richtig schreiben müsste,damit der fehler behoben is

TheShadow

Moderator

BeitragSa, Jan 24, 2004 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst firma erstellen:

local f.firma=new firma

dann bringst du es zum laufen - wird jedoch WIE ICH GESAGT HABE nicht den gewünschten effekt haben
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

girgl

BeitragSa, Jan 24, 2004 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ja schon klar,das ich das erstellen muss,hab ich ja auch gemacht,aber danach kam ja der fehler...vielleicht sollt ich mir ne andere lösung überlegen

Jolinah

BeitragMo, Jan 26, 2004 1:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Arcanes meinte wohl eher sowas:

Code: [AUSKLAPPEN]
Type bla
Field x,y
Field test.test
End Type

Type test
Field parent.bla
Field muh$
End Type

For i = 0 to 9
  a.bla = new bla
  a\x = rand(0,100)
  a\y = rand(0,100)
  a\test = new test
  a\test\muh$ = "....."
  a\test\parent = a       ;Setzt a als Parent dieses Test Objekts
Next

a = AFTER FIRST bla     ;Zweites Objekt in der Liste auswählen


For t.test = each test
  If t\parent = a then count = count + 1
Next

Graphics 800,600,16,2
Text 10,10, count + " Test Objekte gefunden die zu dem ausgewählten bla gehören"

WaitKey()

End



Das gibt allerdings nicht viel Sinn, weil ja immer nur 1 test Objekt zum bla Objekt gehört.


Code: [AUSKLAPPEN]
Type bla
Field x, y
Field test.test[9]
End Type

Type test
Field parent.bla
Field muh$
End Type

For i = 0 To 9
  a.bla = New bla
  a\x = Rand(0,100)
  a\y = Rand(0,100)

  For k = 0 to 9
    a\test[k] = New test
    a\test[k]\muh$ = "....."
    a\test[k]\parent = a       ;Setzt a als Parent dieses Test Objekts
  Next
Next

a = After First bla     ;Zweites Objekt in der Liste auswählen


For t.test = Each test
  If t\parent = a Then count = count + 1
Next

Graphics 800,600,16,2
Text 10,10, count + " Test Objekte gefunden die zu dem ausgewählten bla gehören"

WaitKey()

End



In dem obigen Beispiel gehören immerhin 10 test Objekte zu einem bla Objekt. Jedoch ist es fraglich ob man die test Objekte so abfragen will, mann könnte auf die test Objekte auch per Blitzarray Index zugreifen:

Code: [AUSKLAPPEN]

;Einzelne Abfrage
a\test[0]\muh$
a\test[1]\muh$
...
usw..

;Schleifenabfrage
For i = 0 to 9
  a\test[i]\muh$
Next

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group