Benutzer:Sirrus~dewikibooks/ BlitzBasic/ Gruppe Type-Liste
Type, Field, End Type, New, Each, First, Last, Before, After, Insert, Delete (, Handle, Object)
Mit Type ist es möglich, mehrere Variablen verschiedener Typen zu einer Gruppe zusammen zu fassen und über eine Kollektion (Auflistung) wesentlich flexibler als Dim-Felder zu verwalten. In allen mir bekannten Foren zu BlitzBasic wird jedoch davon abgeraten, Type zu benutzen und statt dessen Dim-Felder zu verwenden da sie angeblich leichter zu benutzen wären, ohne dies jedoch mit konkreten Beispielen zu belegen.
Tatsächlich sind Dim-Felder nur dann einfacher zu benutzen, wenn eine geringe Anzahl Variablen in einer unveränderlichen Anzahl von Gruppen verwendet wird. Ein einfaches Beispiel dafür wäre ein Datei, in der man Namen und Geburtstage von Freunden hat. Man kann für Name und Geburtstag je ein Dim-Feld anlegen und die Inhalte aus der Datei einlesen. Es ist dann leicht, mit einem Index direkt zu einem Namen den Geburtstag auszulesen. Wenn man jedoch die Liste um einen Eintrag erweitern will, wird das schon komplizierter, denn wenn man ein Dim-Feld neu dimensioniert werden alle Einträge gelöscht und müssen erneut eingelesen werden. Will man dann jedoch auch noch die Geburtstage nach Namen oder Datum sortieren, wird das schnell so kompliziert, das damit jeder Anfänger überfordert ist und bald frustriert aufgeben wird.
Dieses einfache Beispiel kann aber schon die vorteile von Types verdeutlichen:
Die Variablen eines Listeneintrags werden mit Type zusammen gefasst
Type Geburtstag Field Name$,Datum$ End Type
Ein Zeiger wird an eine (noch leere) Liste gebunden (Syntax: Gültigkeit Zeiger.Liste)
Global Freund.Geburtstag
Man kann weitere Zeiger für die gleiche Liste erstellen. (dadurch wird keine neue Liste erstellt)
Local Temp.Geburtstag
Mit New wird ein neuer Eintrag (an das Ende der Liste) hinzugefügt. Der Zeiger (Freund) zeigt dann auf den neuen Eintrag
Freund = New Geburtstag
Mit Hilfe des Zeigers kann man auf die Variablen des Eintrags zugreifen. (Syntax: Zeiger\Variable)
Freund\Name$="Peter" A$=Freund\Name
Man kann den Zeiger direkt auf den ersten oder letzten Eintrag einer Liste setzen. (First/Last gibt nicht einen Eintrag, sondern einen Zeiger auf einen Eintrag zurück)
Freund=First Geburtstag Freund=Last Geburtstag
Man kann den Zeiger direkt auf den vorigen oder nächsten Eintrag setzen
Freund=Before Freund Freund=After Freund