Referenzhandbuch
|
Kapitel 12
|
Handhabung der Variablen
Das folgende Kapitel befaßt sich mit den Kommandos für die in AB2 verwendbaren Variablen. Sie lernen hier die Anwendung der
Standardtypen und die NewType-, Array-, List- und Databefehle kennen.
NewType ist die AB2-Antwort auf C-Strukturen.
Befehl: Let
Syntax: Let var =/ Operator
Modus: Amiga/Blitz
Let weist einer Variablen einen Wert zu. Let
ist optional und braucht nicht unbedingt mitgeschrieben zu werden (Let a = 5
oder a = 5). Nach Let folgt immer ein
Variablename und eine Wertangabe. Normalerweise wird für die Wertzuweisung das
=-Zeichen verwendet. Es kann aber auch ein Operator
(z.B. +) verwendet werden.
Hier einige Beispiele:
Let a=10 ;a entspricht 10
Let a=b*5 ;a entspricht 5 mal b
Let k+1 ;addiere 1 zu k
Let z*5 ;multipliziere z mit 5
Befehl: Data
Syntax: Data [.Type] Element[,Element]
Modus: Amiga/Blitz
Mit Data können Variablenwerte oder Zeichenfolgen hintereinander aufgeführt
und bei Bedarf mit dem Read-Befehl eingelesen werden.Type
bezeichnet den Variablentyp (String, Wort usw.). Achten Sie darauf, daß immer nur Data
-Elemente mit Read eingelesen und Variablen zugewiesen werden, die typmäßig
zueinander passen.
Beispiel:
Read a$,b,c.w ;Lese die 3 Dataelemente
NPrint a$ ;Zeige diese an
NPrint b
NPrint c.w
MouseWait
End
Data$ "Einige Data zum Einlesen" ;Stringdata
Data 10 ;Quickdata
Data .w -2 ;Worddata
siehe auch: Read, Restore
Befehl: Read
Syntax: Read Var[,Var...]
Modus: Amiga/Blitz
Mit Read werden die einzelnen Data
-Elemente in Variablen übertragen. Die Übertragung erfolgt sequentiell (nacheinander)
vom ersten bis zum letzten Element. Damit das Programm weiß, welches Element an der Reihe
ist, wird ein Data-Zeiger benutzt. Mit dem Restore-Befehl
ist ein gezieltes Setzen des Zeigers möglich.
siehe auch: Data, Restore
Befehl: Restore
Syntax: Restore [Programm Label]
Modus: Amiga/Blitz
Restore setzt den Data-Zeiger auf das
1. Element einer Data-Serie, die mit Label
näher bezeichnet ist. Restore ohne Angabe von Label
setzt den Data-Zeiger auf das 1. Element der 1. Data-Zeile.
Beispiel:
Read a$,b$
Restore d1
Read c$
NPrint a$
NPrint b$
NPrint c$
MouseWait
End
Data$ "Ich","will","nicht","alles"
d1: Data$ "mehr","viel mehr"
siehe auch: Data, Read
Befehl: Exchange
Syntax: Exchange Var,Var
Modus: Amiga/Blitz
Tauscht den Wert zweier Variablen aus. Die Variablen müssen gleichen Types sein.
Beispiel:
a=10 ;packe 10 in a
b=20 ;packe 20 in b
NPrint a ;zeige a & b an
NPrint b
Exchange a,b ;vertausche a und b
NPrint a ;zeige a und b an
NPrint b
MouseWait
End
Befehl: MaxLen
Syntax: MaxLen Stringvar=Wert/Länge
Modus: Amiga/Blitz
Mit MaxLen wird die maximale Länge eines Strings für die Befehle
FileRequest$ und Fields festgelegt.
Beispiel:
;
; Filerequester-Programmbeispiel
;
WbToScreen 0 ;benutze den WB-Screen als aktuellen Screen
WBenchToFront_ ;bringe den WB-Screen in den Vordergrund
MaxLen pa$=160 ;mit diesen Werten arbeitet der Filerequester
MaxLen fi$=64 ;ohne Probleme
;bringe einen Filerequester auf den Screen
a$=FileRequest$("Wähle ein File",pa$,fi$)
WBenchToBack_ ;Workbench wieder in den Hintergrund bringen
siehe auch: FileRequest$, Fields
Befehl: DEFTYPE
Syntax: DEFTYPE.Typname [Var[,Var,..]]
Modus: Amiga/Blitz
Legt den Variablentyp fest. Dies kann auf 2 Wegen geschehen:
1. Festlegen eines Typs für bestimmte Variablen.
Es müssen Var-Parameter folgen.
DEFTYPE.l a,b ;a und b werden als Langwortvariable behandelt.
2. Eine Voreinstellung des Typs für folgende Variable festlegen. Es folgen keine Var-Parameter.
DEFTYPE.w
a=10 ;a wird als Wordvariable behandelt
Beim Start ist "Quick" voreingestellt.
siehe auch: NEWTYPE
Befehl: NEWTYPE
Syntax: NEWTYPE.Typename
Modus: Amiga/Blitz
Mit NEWTYPE kann ein neuer, selbstgewählter Variablentyp erstellt werden.
Nach NEWTYPE muß eine Liste mit "Elementen-Namen" folgen. Die einzelnen
Namen müssen durch Doppelpunkte ":" und/oder eine neue Zeile getrennt werden. Die "Newtypeliste" muß
mit End NEWTYPE beendet werden.
Beispiel:
NEWTYPE.test
a.l
b.w
c.q
End NEWTYPE
a.test\a=10,20,30
NPrint a\a,a\b,a\c
MouseWait
siehe auch: DEFTYPE, USEPATH
Befehl: End NEWTYPE
Syntax: End NEWTYPE
Modus: Amiga/Blitz
siehe NEWTYPE.
Befehl: SizeOf
Syntax: SizeOf.Typename[,Eintrittspfad]
Modus: Amiga/Blitz
Mit SizeOf können Sie den benötigten Speicherbedarf eines Variablentyps
in Byte ermitteln. Bei Angabe von Eintrittspfad gilt dies für
NEWTYPE-Variablen.
Beispiel:
NEWTYPE.test ;Festlegen eines Anwendervariablentyps
a.l
b.w
c.q
End NEWTYPE ;Festlegungsende
NPrint SizeOf.b ;zeigt Größe eines Byte
NPrint SizeOf.test ;zeigt Größe unseres festg. Variablentyps
NPrint SizeOf.test\b ;zeigt Größe von `b' unseres festg. Typs
MouseWait
siehe auch: NEWTYPE
Befehl: Dim
Syntax: Dim Arrayname [List](Dimension [,Dim2..])
Modus: Amiga/Blitz
Mit Dim legen Sie ein normales Basicarray oder, wenn List
angegeben wird, eine Liste fest. Dimension gibt die maximale Anzahl der Arrayelemente
an. Bei Angabe von List ist nur eine Dimension möglich.
Beispiel:
Dim a(3,3) ;Ein Array initialisieren
For k=1 To 3 ;äußere Schleife
For j=1 To 3 ;innere Schleife
a(k,j)=c ;Wert von 'c' ins Arrayelement
c+1 ;'c' erhöhen
Next ;Ende innere Schleife
Next ;Ende äußere Schleife
For k=1 To 3 ;Arrayelemente anzeigen
For j=1 To 3
NPrint "a(",k,",",j,")=",a(k,j)
Next
Next
MouseWait
Befehl: ResetList
Syntax: ResetList Arrayname()
Modus: Amiga/Blitz
ResetList wird in Verbindung mit Listarrays benutzt, um das Listarray für eine
NextItem-Ausführung vorzubereiten.
Nach Ausführen von ResetList wird der Listenzeiger auf das erste Element des Arrays gesetzt.
Beispiel:
Dim List a(10)
While AddFirst(a())
a()=c
c+1
Wend
NPrint "Werte von a() werden angezeigt..."
ResetList a()
While NextItem(a())
NPrint a()
Wend
MouseWait
siehe auch: NextItem
Befehl: ClearList
Syntax: ClearList Arrayname()
Modus: Amiga/Blitz
ClearList wird in Verbindung mit Listarrays benutzt, um ein ausgewähltes Listarray komplett zu
"leeren". Listarrays werden automatisch geleert, wenn sie dimensioniert werden.
siehe auch: Dim, ResetList
Funktion: AddFirst
Syntax: AddFirst (Arrayname())
Modus: Amiga/Blitz
Erlaubt das Hinzufügen eines Arrayteils an den Anfang der Arrayliste. Die AddFirst-Funktion
überprüft, ob noch Platz vorhanden ist und meldet dies mit falsch (0)
oder richtig (-1). Sollte ein Einfügen möglich sein, wird der aktuelle
Listarrayzeiger auf dieses Element gesetzt.
Beispiel:
Dim List a(100) ;Ein Listarray initialisieren
While AddFirst(a()) ;Solange ein Wert verfügbar ist...
a()=c ;und füge diesen in die Liste ein
c+1 ;erhöhe 'c'
Wend
;zeige, wieviele Werte in die Liste hinzugefügt
;wurden.
NPrint c," Werte erfolgreich hinzugefügt."
MouseWait
siehe auch: AddLast, AddItem, KillItem
Funktion: AddLast
Syntax: AddLast (Arrayname())
Modus: Amiga/Blitz
Erlaubt das Einfügen eines Arrayteiles an das Ende der Arrayliste.
Sonst wie AddFirst.
siehe auch: AddFirst, AddItem, KillItem
Funktion: AddItem
Syntax: AddItem (Arrayname())
Modus: Amiga/Blitz
Die AddItem-Funktion erlaubt das Einfügen eines Arrayteiles hinter das aktuelle Arrayteil. Der
Listenzeiger wird auf dieses neue Element gesetzt.
Sonst wie: AddFirst.
Beispiel:
Dim List a(10)
If AddFirst(a()) Then a()=1
If AddItem(a()) Then a()=2
NPrint "Listarraywerte ab Anfang..."
ResetList
While NextItem(a())
NPrint a()
Wend
MouseWait
siehe auch: AddFirst, KillItem
Funktion: KillItem
Syntax: KillItem Arrayname()
Modus: Amiga/Blitz
Wird benutzt, um ein ausgewähltes Arrayteil zu löschen. Der Listenzeiger wird auf das Arrayteil vor dem gelöschten
Arrayteil gesetzt.
Beispiel:
Dim List a(10)
While AddItem(a())
a()=c
c+1
Wend
ResetList a()
While NextItem(a())
If a()/2<>Int(a())
KillItem a()
EndIf
Wend
NPrint "Fertige Liste..."
ResetList a()
While NextItem(a())
NPrint a()
Wend
MouseWait
siehe auch: AddFirst, AddLast, AddItem
Funktion: PrevItem
Syntax: PrevItem (Arrayname())
Modus: Amiga/Blitz
Setzt den Listenzeiger auf das Arrayteil vor dem zuvor ausgewählten Arrayteil. Somit sind
"Rückwärts"-Abläufe in der Liste möglich.
Beispiel:
Dim List a(10) ;initialisiere ein Listarray
While AddLast(a()) ;Liste mit
a()=c
c+1 ;1,2,3--- füllen
Wend
NPrint "Listenwerte rückwärts..."
If LastItem(a()) ;gehe zum letzten Teil der Liste
Repeat ;wiederhole bis
NPrint a() ;kein Rückwärtsschritt mehr möglich.
Until a()
EndIf
MouseWait
siehe auch: NextItem
Funktion: NextItem
Syntax: NextItem (Arrayname())
Modus: Amiga/Blitz
Setzt den Zeiger auf das Arrayteil nach dem zuvor ausgewählten Arrayteil. Somit ist eine Vorwärtsabarbeitung der
Liste möglich. Steht kein Arrayteil mehr zur Verfügung, gibt NextItem falsch
(0) aus, andernfalls richtig (-1).
Beispiel:
Dim List a(10) ;Erstelle ein List-Array
While AddLast(a)) ;Fülle das Array mit Elementen an
a()=C
c+1
Wend
NPrint "Der Inhalt des List-Arrays ist (vorwärts)"
ResetList a()
While NextItem(a)) ;Array-Elemente ausgeben
NPrint a()
Wend
MouseWait
siehe auch: PrevItem
Funktion: FirstItem
Syntax: FirstItem (Arrayname())
Modus: Amiga/Blitz
Setzt den Listenzeiger auf das erste Teilstück der Liste. Ist kein Teilstück vorhanden, wird falsch
(0), andernfalls richtig (-1) ausgegeben.
Beispiel:
Dim List a(10) ;Erstelle ein List-Array
While AddLast(a)) ;Fülle das Array mit Elementen an
a()=C
c+1
Wend
If FirstItem(a)) ;Falls es ein erstes List-Array-Teilstück gibt
NPrint "Das erste Element in der Liste ist:",a() ;wird es ausgegeben
EndIf
MouseWait
siehe auch: LastItem
Funktion: LastItem
Syntax: LastItem (Arrayname())
Modus: Amiga/Blitz
Die Ausführung von LastItem setzt den Listenzeiger auf das letzte Teilstück der Liste.
Ist kein Teilstück vorhanden, wird falsch (0), andernfalls richtig
(-1) zurückgegeben.
siehe auch: FirstItem
Befehl: PushItem
Syntax: PushItem Arrayname()
Modus: Amiga/Blitz
Legt den aktuellen Listenzeiger in einen separaten Stapelbereich ab. Dieser Zeiger kann später mit
PopItem wieder eingelesen werden. Der interne Stapelbereich erlaubt
die Ablage von maximal 8 Zeigern.
Beispiel:
Dim List a(10) ;Erstelle ein List-Array
While AddLast(a)) ;Fülle das Array mit Elementen an
a()=C
c+1
Wend
ResetList a()
While NextItem(a)) ;alle Teilstücke durchgehen
If a()=5 Then PushItem a() ;speichern, wo die '5' gefunden wird
Wend
PopItem a() ;"5" wieder aufrufen
KillItem a() ;und löschen
ResetList a()
While NextItem(a)) ;Array-Elemente ausgeben
NPrint a()
Wend
MouseWait
siehe auch: PopItem
Befehl: PopItem
Syntax: PopItem Arrayname()
Modus: Amiga/Blitz
Holt den mit PushItem abgelegten Listenzeiger vom Stapel. Der Arrayname muß identisch
sein mit dem Arrayname des PushItem-Befehls.
siehe auch: PushItem
Befehl: ItemStackSize
Syntax: ItemStackSize MaxItems
Modus: Amiga/Blitz
Mit ItemStackSize legen Sie die maximale Anzahl der Listenteilstücke auf dem Stapel fest.
Beispiel: ItemStackSize 1000 erlaubt die Benutzung von 1000 Teilstücken bevor ein
Überlauf der Liste eintritt.
siehe auch: PushItem, PopItem
Befehl: Sort
Syntax: Sort Arrayname()
Modus: Amiga/Blitz
Sort sortiert das mit Arrayname festgelegte Array. Die Arraywerte werden in aufsteigender
oder absteigender Reihenfolge sortiert. Voreingestellt ist aufsteigend. Die Einstellung können Sie mit
SortUp oder SortDown ändern.
Newtype- und Listarrays können nicht sortiert werden.
Beispiel:
Dim a(9) ;erstelle ein Array 'a'
For k=0 To 9 ;und fülle es mit Zufallswerten
a(k)=Rnd
Next
Sort a() ;sortiere das Array
For k=0 To 9 ;und gib es aus
NPrint a(k)
Next
MouseWait
siehe auch: SortUp, SortDown
Befehl: SortUp
Syntax: SortUp
Modus: Amiga/Blitz
Legt die Sortierart des Sort-Befehls fest. Hier "von unten nach oben".
siehe auch: Sort, SortDown
Befehl: SortDown
Syntax: SortDown
Modus: Amiga/Blitz
Legt die Sortierart des Sort-Befehls fest. Hier "von oben nach unten".
siehe auch: Sort, SortUp
|