Mit Listen arbeiten

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Vertex

Betreff: Mit Listen arbeiten

BeitragSa, März 10, 2007 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich habe mehrere Funktionen, die Listen zurück geben müssen. Einserseits müssen das Typeinstanzen sein, andererseits atomare Datentypen wie String und Int.

Das ist die eleganteste Lösung, die ich für Typeinstanzen mir ausgedacht habe:
Code: [AUSKLAPPEN]
Global LastCount%
Type TThing
   Field Name$
   Field X%
   Field Y%
End Type

Global Thing.TThing, Index%

Thing = ListThings("Eins")
For Index = 1 To LastCount
   Print(Thing\Name + "(" + Thing\X + ", " + Thing\Y + ")")
   Thing = After(Thing)
Next
Print() : WaitKey()

Thing = ListThings("Zwei")
For Index = 1 To LastCount
   Print(Thing\Name + "(" + Thing\X + ", " + Thing\Y + ")")
   Thing = After(Thing)
Next
Print()
WaitKey()

Thing = ListThings("Drei")
For Index = 1 To LastCount
   Print(Thing\Name + "(" + Thing\X + ", " + Thing\Y + ")")
   Thing = After(Thing)
Next
Print() : WaitKey()

Print()
Print("Fertig")
WaitKey()
End

Function ListThings.TThing(Name$)
   Local Count%, Index%, Thing.TThing, FirstThing.TThing

   Count = Rand(1, 10)
   LastCount = Count

   For Index = 0 To Count - 1
      Thing = New TThing
      Thing\Name = Name
      Thing\X    = Rand(0, 255)
      Thing\Y    = Rand(0, 255)

      If Index = 0 Then FirstThing = Thing
   Next

   Return FirstThing
End Function


ListThings gibt das erste Element der Liste zurück, und setzt eine globale Variable LastCount auf die Anzahl der Listeneinträge. Das Durchlaufen der Liste erfolgt dann in einer For-Schleife statts in einer ForEach-Schleife. Der nächste Eintrag wird per Thing = After(Thing) ermittelt.

Soweit reicht das mir auch. Die Einträge werden nicht irgendwie umsortiert oder gelöscht.

Jetzt suche ich aber eine elegante Lösung für String- und Integerlisten.

mfg olli
vertex.dreamfall.at | GitHub

Silver_Knee

BeitragSa, März 10, 2007 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
spontan würd ich sagen mach einen Type mit dem feld zahl tada integer-liste oder dem field txt$ und deine funktion eignet sich dan wunderbar eine solche liste wieder auszugeben nur zei änderungn:
Code: [AUSKLAPPEN]
Function ListStrings$(Name$)
und
Code: [AUSKLAPPEN]
   Return FirstSring.Stringtype\txt$

für int entsprechend

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group