Vai al contenuto principale

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:

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