Zum Hauptinhalt springen

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:

  1. | 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 |