Syntax und Struktur
Basic-Syntax
Das Custom Scripting von IndySoft führt Code aus, der in Basic-Syntax geschrieben ist. Die aktuelle Basissyntax unterstützt:
·sub .. Ende und Funktion .. End-Deklarationen
·byref- und dim-Direktiven
·if .. dann .. sonst .. Endkonstruktor
·for .. bis .. Schritt .. nächster Konstruktor
·do .. während … Schleife und do .. Schleife .. während Konstruktoren
·do .. bis .. Schleife und do .. Schleife .. bis hin zu Konstruktoren
·^ , * , / , sowie den Operatoren + , - , oder , <> , >=, <= , = , > , < , div , mod , xor , shl , shr
·try .. außer und versuchen .. schließlich blockiert
·select case .. Ende von „select“ Konstruktor
·Array-Konstruktoren (x:=[ 1, 2, 3 ];)
·„exit“-Anweisung
·Zugriff auf Objekteigenschaften und -methoden ( ObjectName.SubObject.Property )
Aufbau des Skripts
Der Aufbau des Skripts besteht aus zwei Hauptblöcken:
a) Funktions- und Unterprogrammdeklarationen sowie „
“ b) main-Block.
Beides ist optional, aber mindestens eines davon sollte im Skript enthalten sein.
Einige Beispiele:
SKRIPT 1:
SUB DoSomething
CallSomething
END SUB
CallSomethingElse
SKRIPT 2:
CallSomethingElse
SKRIPT 3:
FUNKTION MyFunction
MyFunction = 'Ok!'
END FUNKTION
Wie im normalen Basic können Anweisungen in einer einzigen Zeile durch das Zeichen „:“ getrennt werden.
Bezeichner
Bezeichnernamen im Skript (Variablennamen, Funktions- und Prozedurnamen usw.) Befolge die gängigsten Regeln in Basic:
- | muss mit einem Buchstaben (a..z oder A..Z) oder einem Unterstrich („“) beginnen und darf aus alphanumerischen Zeichen oder Unterstrichen („“) bestehen.2. | Darf keine anderen Zeichen oder Leerzeichen enthalten. Gültige Bezeichner:
VarName
_Some
V1A2 _____Some____
Ungültige Bezeichner:
2Var
Mein Name Mehr
Dies,ist,nicht,gültig
Zuweisungsanweisungen
Zuweisungsanweisungen (Zuweisung eines Werts oder des Ergebnisses eines Ausdrucks an eine Variable oder eine Objekteigenschaft) werden mit dem Zeichen „=“ gebildet.
Beispiele:
MyVar = 2
Button.Caption = 'Das ' + 'ist in Ordnung.'
Zeichenfolgen
e Zeichenfolgen (Zeichenfolgen) werden in BASIC mit doppelten Anführungszeichen (') deklariert.
Einige Beispiele:
A = 'Dies ist ein Text'
Str = 'Text '+'concat'
Kommentare
Kommentare können in das Skript eingefügt werden. Sie können '-Zeichen oder REM verwenden. Der Kommentar endet am Zeilenende.
Beispiele:
' Dies ist ein Kommentar vor ShowMessage
ShowMessage('Ok')
REM Dies ist ein weiterer Kommentar ShowMessage('Noch ein Ok!')
' Und dies ist ein Kommentar
' über zwei Zeilen
ShowMessage('Ende der Ok-Meldungen')
Variablen
Im Skript müssen Variablentypen nicht deklariert werden. Man deklariert eine Variable also einfach mit der DIM-Anweisung und ihrem Namen.
Es ist nicht erforderlich, Variablen zu deklarieren, wenn die Scripter-Eigenschaft „OptionExplicit“ auf „false“ gesetzt ist. In diesem Fall werden Variablen implizit
deklariert. Wenn Sie mehr Kontrolle über das Skript haben möchten, setzen Sie die Eigenschaft „OptionExplicit“ auf „true“. Dies führt zu einem Kompilierungs
-Fehler, wenn die Variable im Skript verwendet, aber nicht deklariert wird.
Beispiele:
SKRIPT 1:
SUB Msg
DIM S
S = 'Hello world!'
ShowMessage(S)
END SUB
SKRIPT 2:
DIM A
A = 0
A = A+1
ShowMessage(A)
Beachten Sie, dass Variablendeklarationen in keinem der oben genannten Skripte unter
erforderlich sind, wenn die Skript-Eigenschaft „OptionExplicit“ auf „false“ gesetzt ist.
Indizierung
Strings, Arrays und Array-Eigenschaften können mit den Zeichen „[“ und „]“ indiziert werden.
Ist beispielsweise Str eine Zeichenfolgenvariable, gibt der Ausdruck Str[3] im Rahmen der „
“-Funktion das dritte Zeichen der durch Str bezeichneten Zeichenfolge zurück, während Str[I + 1] das Zeichen zurückgibt, das unmittelbar auf das durch I indizierte Zeichen folgt.
Weitere Beispiele:
MyChar = MyStr[2]
; MyStr[1] = 'A'; MyArray[1,2] = 1530
; Lines.Strings[2] = 'Some text'
Arrays-
-Skript unterstützt Array-Konstruktoren und variantenbasierte Arrays. Um ein Array zu erstellen, verwende die Zeichen '[' und ']'. Mit <br /> <br /> können Sie Array-Konstruktoren erstellen, die mehrere indizierte Arrays verschachteln. Sie können dann mithilfe von Indizes auf Arrays zugreifen. Wenn das Array mehrere Indizes hat, trennen Sie die einzelnen Indizes mit einem Komma (,).
Wenn „variable“ ein Variant-Array ist, unterstützt das Skript automatisch die Indizierung dieser Variablen. Eine Variable ist ein Variant-Array, wenn sie über einen Array-Konstruktor zugewiesen wurde (
), wenn es sich um einen direkten Verweis auf eine Delphi-Variable handelt, die ein Variant-Array ist (siehe später „Integration von Delphi und
“), oder wenn sie mit der Prozedur VarArrayCreate erstellt wurde.
Arrays in Skripten werden ab 0 indiziert. Einige Beispiele:
NewArray = [2,4,6,8]
Num = NewArray[1] //Num erhält den Wert '4'
MultiArray = [ ['green','red','blue'], ['apple','orange','lemon'] ]
Str = MultiArray[0,2] //Str erhält den Wert 'blue'
MultiArray[1,1] = 'new orange'
if-Anweisungen
Es gibt zwei Formen der if-Anweisung: if...then...end if und if...then...else...end if. Wie bei der normalen if-Anweisung werden die Anweisungen ausgeführt, wenn der if-Ausdruck
wahr ist. Wenn ein „else“-Teil vorhanden ist und der Ausdruck falsch ist, werden die Anweisungen nach „else“ ausgeführt.
Beispiele:
IF J <> 0 THEN
Ergebnis = I/J
END IF
IF J = 0 THEN
Exit Sub
ELSE
Result = I/J
END IF
IF J <> 0 THEN
Result = I/J
Count = Count + 1
ELSE
Done = True
END IF
while-Anweisungen
Eine while-Anweisung dient dazu, Anweisungen so lange zu wiederholen, wie eine Kontrollbedingung (Ausdruck) als wahr ausgewertet wird. Die Bedingung der Steuer
s wird vor den Anweisungen ausgewertet. Wenn also die Kontrollbedingung bei der ersten Iteration falsch ist, wird die Anweisungsfolge „
“ niemals ausgeführt. Die while-Anweisung führt die darin enthaltene Anweisung wiederholt aus und prüft vor jeder Iteration den Ausdruck „
“. Solange der Ausdruck „True“ zurückgibt, wird die Ausführung fortgesetzt.
Beispiele:
WHILE (Data[I] <> X)
I = I + 1
END WHILE
WHILE (I > 0)
IF Odd(I) THEN
Z = Z * X
END IF
X = Sqr(X)
END WHILE
WHILE (nicht Eof(InputFile))
Readln(InputFile, Line)
Process(Line)
END WHILE
Schleifenanweisungen
Script unterstützt Schleifenanweisungen. Die möglichen Syntaxvarianten lauten:
DO WHILE-Anweisungen LOOP
DO UNTIL-Anweisungen LOOP
DO-Anweisungen LOOP WHILE-Anweisungen
DO-Anweisung LOOP UNTIL-Anweisung
Anweisungen werden so lange ausgeführt, wie expr wahr ist, oder bis expr wahr ist. Wenn „expr“ vor Anweisungen steht, wird die Bedingung der Steuer
e vor der Iteration geprüft. Andernfalls wird die Kontrollbedingung nach der Iteration geprüft.
Beispiele:
DO
K = I mod J
I = J
J = K
LOOP UNTIL J = 0
DO UNTIL I >= 0
Write('Geben Sie einen Wert ein (0..9): ') Readln(I)
LOOP
DO
K = I mod J
I = J
J = K
LOOP WHILE J <> 0
DO WHILE I < 0
Write('Geben Sie einen Wert ein (0..9): ')
Readln(I)
LOOP
für Anweisungen
Scripter unterstützt Anweisungen mit folgender Syntax: FOR counter = initialValue TO finalValue STEP stepValue
statements NEXT.
Wenn der Zählerstand des Zählers auf den Anfangswert gesetzt wird, wird die Anweisung so lange wiederholt, bis „next“ erreicht ist, und der Wert des Zählers wird um den Schrittwert erhöht, bis der Zähler den Endwert erreicht. Der Schritt ist optional; wird er weggelassen, wird stepValue als 1 angesehen (
).
Beispiele:
SKRIPT 1:
FÜR c = 1 BIS 10 IN SCHRITTEN VON 2
: a = a + c
; NÄCHSTE
SKRIPT 2:
FÜR I = a BIS b
j = i²
sum = sum + j
NEXT
„select case“-Anweisungen „
“ Scripter unterstützt „select case“-Anweisungen mit folgender Syntax:
SELECT CASE selectorExpression
CASE caseexpr1
statement1
CASE caseexprn
statementn
CASE ELSE
elsestatement
END SELECT
Wenn der Selektorausdruck mit dem Ergebnis eines der caseexprn-Ausdrücke übereinstimmt, werden die entsprechenden Anweisungen ausgeführt.
Andernfalls wird die elsestatement-Anweisung ausgeführt. Der übrige Teil der case-Anweisung ist optional.
Beispiel:
SELECT CASE uppercase(Fruit)
CASE 'lime' ShowMessage('green')
CASE 'orange' ShowMessage('orange')
CASE 'apple' ShowMessage('red')
CASE ELSE ShowMessage('black')
END SELECT |