Sintassi e struttura
Sintassi Basic
Il sistema di scripting personalizzato di IndySoft esegue codice scritto in sintassi Basic. La sintassi di base attuale supporta:
·sub .. fine e funzione .. dichiarazioni di fine
·direttive byref e dim
·if .. poi... altrimenti .. fine del costruttore
·for .. a .. passo .. costruttore successivo
·do .. mentre... ripetere e fare... ciclo .. mentre i costruttori
·do .. fino a quando... ripetere e fare... ciclo .. fino agli operatori di costruzione
·^ , * , / , e , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shr
·prova .. tranne che... e prova... blocca infine
·select case .. fine selezione costruttori
·costruttori di array (x:=[ 1, 2, 3 ];)
·istruzione exit
·accesso alle proprietà e ai metodi degli oggetti ( ObjectName.SubObject.Property )
Struttura dello script
La struttura dello script è composta da due blocchi principali:
a) dichiarazioni di funzioni e sottoprogrammi e <br /> <br /> b) blocco main.
Entrambe sono facoltative, ma nello script deve essercene almeno una.
Alcuni esempi:
COPIONE 1:
SUB DoSomething
CallSomething
END SUB
CallSomethingElse
COPIONE 2:
Chiamalo in un altro modo
COPIONE 3:
FUNZIONE MyFunction
MyFunction = 'Ok!'
END FUNZIONE
Come nel linguaggio Basic standard, le istruzioni su una singola riga possono essere separate dal carattere «:».
Identificatori
Nomi degli identificatori nello script (nomi delle variabili, nomi delle funzioni e delle procedure, ecc.) segui le regole più comuni in Basic:
- | deve iniziare con un carattere (a..z o A..Z) o con «_» e può essere seguito da caratteri alfanumerici o dal carattere «_».2. | Non può contenere altri caratteri né spazi. Identificatori validi:
VarName
_Some
V1A2 _____Some____
Identificatori non validi:
2Var
Il mio nome Altro
Questo non è valido
Istruzioni di assegnazione
Le istruzioni di assegnazione (che assegnano un valore o il risultato di un'espressione a una variabile o alla proprietà di un oggetto) si scrivono utilizzando il segno "=".
Esempi:
MyVar = 2
Button.Caption = 'Questo ' + 'va bene.'
Stringhe di caratteri
Le stringhe (sequenze di caratteri) vengono dichiarate in Basic utilizzando le virgolette doppie (').
Alcuni esempi:
A = 'Questo è un testo'
Str = 'Testo ' + 'concat'
Commenti
È possibile inserire commenti all'interno dello script. È possibile utilizzare caratteri ' o REM. Il commento terminerà alla fine della riga.
Esempi:
' Questo è un commento prima di ShowMessage
ShowMessage('Ok')
REM Questo è un altro commento ShowMessage('Ancora ok!')
' E questo è un commento
' su due righe
ShowMessage('Fine degli ok')
Variabili
Non è necessario dichiarare i tipi delle variabili nello script. Pertanto, per dichiarare una variabile basta usare la direttiva DIM e il suo nome.
Non è necessario dichiarare le variabili se la proprietà OptionExplicit dello script è impostata su false. In questo caso, le variabili sono dichiarate implicit
. Se desideri avere un maggiore controllo sullo script, imposta la proprietà OptionExplicit su true. Se una variabile viene utilizzata ma non è stata dichiarata nello script, verrà generato un errore di compilazione di tipo "
".
Esempi:
COPIONE 1:
SUB Msg
DIM S
S = 'Hello world!'
ShowMessage(S)
END SUB
COPIONE 2:
DIM A
A = 0
A = A+1
ShowMessage(A)
Si noti che se la proprietà OptionExplicit dello script è impostata su false, non è necessario dichiarare le variabili in nessuno degli script
sopra indicati.
Indici
Le stringhe, gli array e le proprietà degli array possono essere indicizzati utilizzando i caratteri «[» e «]». Ad esempio, se Str è una variabile di tipo stringa, l'espressione Str[3] dell'
e restituisce il terzo carattere della stringa indicata da Str, mentre Str[I + 1] restituisce il carattere
immediatamente successivo a quello indicato dall'indice I.
Altri esempi:
MyChar = MyStr[2]
; MyStr[1] = 'A'; MyArray[1,2] = 1530
; Lines.Strings[2] = 'Some text'
Matrici
Script supporta i costruttori di matrici e le matrici di tipi variabili. Per creare un array, usa i caratteri '[' e ']'. È possibile utilizzare
per creare array multi-indice annidati tramite i costruttori di array. È quindi possibile accedere agli array utilizzando gli indici. Se l'array è multi-indice,
separare gli indici utilizzando ','.
Se la variabile è un array di varianti, lo script supporta automaticamente l'indicizzazione all'interno di tale variabile. Una variabile è un array di tipo Variant se è stata assegnata in un
e tramite un costruttore di array, se costituisce un riferimento diretto a una variabile Delphi che è un array di tipo Variant (vedere più avanti l'integrazione tra Delphi e
) oppure se è stata creata utilizzando la procedura VarArrayCreate.
Gli array in Script hanno un'indicizzazione a partire da 0. Alcuni esempi:
NewArray = [2,4,6,8]
Num = NewArray[1] //Num riceve '4'
MultiArray = [ ['verde','rosso','blu'] , ['mela','arancia','limone'] ]
Str = MultiArray[0,2] //Str riceve 'blu'
MultiArray[1,1] = 'nuova arancia'
Istruzioni if
Esistono due forme di istruzione if: if...then...end if e if...then...else...end if. Come nel caso del ciclo if-else standard, se l'espressione if
è vera, le istruzioni vengono eseguite. Se è presente un'istruzione else e l'espressione è falsa, vengono eseguite le istruzioni successive a else.
Esempi:
IF J <> 0 THEN
Result = I/J
END IF
SE J = 0 ALLORA
Exit Sub
ALTRIMENTI
Result = I/J
FINE SE
IF J <> 0 THEN
Result = I/J
Count = Count + 1
ELSE
Done = True
END IF
Istruzioni while
Un'istruzione while viene utilizzata per ripetere delle istruzioni fintanto che una condizione di controllo (espressione) viene valutata come vera. La condizione dell'
e di controllo viene valutata prima delle istruzioni. Pertanto, se la condizione di controllo è falsa alla prima iterazione, la sequenza di istruzioni «
» non viene mai eseguita. L'istruzione while esegue ripetutamente l'istruzione che la compone, verificando l'espressione prima dell'
e in ogni iterazione. Finché l'espressione restituisce True, l'esecuzione prosegue.
Esempi:
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 (not Eof(InputFile))
Readln(InputFile, Line)
Process(Line)
END WHILE
istruzioni di ciclo Gli script di
supportano le istruzioni di ciclo. Le sintassi possibili sono:
DO WHILE espr istruzioni LOOP
DO UNTIL espr istruzioni LOOP
DO istruzioni LOOP WHILE espr
DO istruzione LOOP UNTIL espr
Le istruzioni verranno eseguite FINCHÉ l'espressione è vera, oppure FINCHÉ l'espressione non diventa vera. Se l'espressione si trova prima delle istruzioni, la condizione dell'
e di controllo verrà valutata prima dell'iterazione. In caso contrario, la condizione di controllo verrà verificata dopo l'iterazione.
Esempi:
FARE
K = I mod J
I = J
J = K
CICLO FINCHÉ J = 0
FARE FINCHÉ I >= 0
Scrivere('Inserisci un valore (0..9): ') Leggere(I)
CICLO
DO
K = I mod J
I = J
J = K
LOOP WHILE J <> 0
DO WHILE I < 0
Write('Inserisci un valore (0..9): ')
Readln(I)
LOOP
per le istruzioni
Scripter supporta le istruzioni con la seguente sintassi: FOR contatore = valoreIniziale TO valoreFinale STEP incremento
istruzioni NEXT. Se il contatore è impostato su initialValue, l'istruzione viene ripetuta fino a quando non si raggiunge "next" e il valore del contatore viene incrementato di step
, finché il contatore non raggiunge finalValue. Il parametro step è facoltativo; se omesso, il valore di step (stepValue) è considerato pari a 1 d
.
Esempi:
COPIONE 1:
FOR c = 1 TO 10 STEP 2
a = a + c
NEXT
COPIONE 2:
FOR i = a TO b
j = i ^ 2
sum = sum + j
NEXT
Istruzioni SELECT CASE
Scripter supporta le istruzioni SELECT CASE con la seguente sintassi:
SELECT CASE selettoreEspressione
CASE espressioneCaso1
istruzione1
CASE caseexprn
statementn
CASE ELSE
elsestatement
END SELECT
Se l'espressione di selezione corrisponde al risultato di una delle espressioni caseexprn, verranno eseguite le rispettive istruzioni.
In caso contrario, verrà eseguita l'istruzione elsestatement. Il resto dell'istruzione case è facoltativo.
Esempio:
SELECT CASE uppercase(Fruit)
CASE 'lime' ShowMessage('green')
CASE 'orange' ShowMessage('orange')
CASE 'apple' ShowMessage('red')
CASE ELSE ShowMessage('black')
END SELECT |