Syntaxe et structure
Syntaxe Basic
Le système de scripts personnalisés d'IndySoft exécute du code écrit en syntaxe Basic. La syntaxe de base actuelle prend en charge :
·sous-section .. fin et fonction .. Déclarations de fin
· Directives byref et dim
· if .. ensuite... sinon... fin du constructeur
·for .. à... étape .. constructor suivant
·do .. pendant que... boucle et faire... boucle .. tandis que les constructeurs
·do .. jusqu'à ce que... boucle et faire... boucle .. jusqu'aux constructeurs
·^ , * , / , et , + , - , ou , <> , >=, <= , = , > , < , div , mod , xor , shl , shr opérateurs
·try .. sauf si et essayer... enfin, les blocs
·select case .. fin de sélection constructeur
·constructeurs de tableaux (x := [1, 2, 3];)
·instruction exit
·accès aux propriétés et méthodes d'un objet (NomObjet.SousObjet.Propriété)
de la structure du script La structure du script se compose de deux blocs principaux :
a) les déclarations de fonctions et de sous-programmes ainsi que l'
b) le bloc main.
Ces deux éléments sont facultatifs, mais au moins l'un d'entre eux doit figurer dans le script.
Quelques exemples :
SCÉNARIO 1 :
SUB DoSomething
CallSomething
END SUB
CallSomethingElse
SCÉNARIO 2 :
AppelerAutreChose
SCÉNARIO 3 :
FONCTION MyFunction
MyFunction = 'Ok!'
END FUNCTION
Comme en Basic standard, les instructions sur une seule ligne peuvent être séparées par le caractère « : ».
Identificateurs
Noms des identificateurs dans le script (noms de variables, noms de fonctions et de procédures, etc.) Respectez les règles les plus courantes en matière de bases :
- | doit commencer par une lettre (a..z ou A..Z) ou par le caractère « _ », et peut être suivi de caractères alphanumériques ou du caractère « _ ».2. | Ne peut contenir aucun autre caractère ni espace. Identificateurs valides :
VarName
_Some
V1A2 _____Some____
Identificateurs non valides :
2Var
Mon nom Autres
Ceci n'est pas valide
Instructions d'affectation
Les instructions d'affectation (qui consistent à attribuer une valeur ou le résultat d'une expression à une variable ou à une propriété d'objet) s'écrivent à l'aide du signe « = ».
Exemples :
MyVar = 2
Button.Caption = 'Ceci ' + 'est correct.'
Les chaînes de caractères
es (séquences de caractères) sont déclarées en Basic à l'aide de guillemets doubles (').
Quelques exemples :
A = « Ceci est un texte »
Str = « Texte » + « concat »
Commentaires
: il est possible d'insérer des commentaires dans le script. Vous pouvez utiliser des caractères ' ou REM. Le commentaire se termine à la fin de la ligne.
Exemples :
' Voici un commentaire avant ShowMessage
ShowMessage('Ok')
REM Voici un autre commentaire ShowMessage('Encore ok !')
' Et voici un commentaire
' sur deux lignes
ShowMessage('Fin des "ok")
Variables
Il n'est pas nécessaire de déclarer les types de variables dans le script. Ainsi, vous déclarez une variable simplement en utilisant la directive DIM et son nom.
Il n'est pas nécessaire de déclarer les variables si la propriété OptionExplicit du script est définie sur false. Dans ce cas, les variables sont déclarées de maniè
e implicite. Si vous souhaitez avoir davantage de contrôle sur le script, définissez la propriété OptionExplicit sur true. Cela provoquera une erreur d'
e de compilation si la variable est utilisée sans avoir été déclarée dans le script.
Exemples :
SCÉNARIO 1 :
SUB Msg
DIM S
S = 'Bonjour tout le monde !'
ShowMessage(S)
END SUB
SCÉNARIO 2 :
DIM A
A = 0
A = A+1
ShowMessage(A)
Notez que si la propriété OptionExplicit du script est définie sur « false », il n'est pas nécessaire de déclarer les variables dans aucun des scripts
ci-dessus.
Indexation
Les chaînes, les tableaux et les propriétés des tableaux peuvent être indexés à l'aide des caractères « [ » et « ] ». Par exemple, si Str est une variable de type chaîne, l'expression
Str[3] renvoie le troisième caractère de la chaîne désignée par Str, tandis que Str[I + 1] renvoie le caractère
situé immédiatement après celui indexé par I.
Autres exemples :
MyChar = MyStr[2]
MyStr[1] = 'A' MyArray[1,2] = 1530
Lines.Strings[2] = 'Some text'
Tableaux
Script prend en charge les constructeurs de tableaux et les tableaux de types variés. Pour créer un tableau, utilisez les caractères « [ » et « ] ». Vous pouvez utiliser <br /> <br /> pour créer des tableaux à indices multiples imbriqués à l'aide de constructeurs de tableaux. Vous pouvez ensuite accéder aux tableaux à l'aide d'index. Si le tableau est à indices multiples,
séparez les indices par une virgule (« , »).
Si la variable est un tableau de variantes, le script prend automatiquement en charge l'indexation de cette variable. Une variable est un tableau de type Variant si elle a été définie à l'aide d'un constructeur de tableau (
), s'il s'agit d'une référence directe à une variable Delphi qui est un tableau de type Variant (voir plus loin l'intégration de Delphi et d'
) ou si elle a été créée à l'aide de la procédure VarArrayCreate.
Dans les scripts, l'indexation des tableaux commence à 0. Quelques exemples :
NewArray = [ 2,4,6,8 ]
Num = NewArray[1] //Num prend la valeur « 4 »
MultiArray = [ ['vert','rouge','bleu'] , ['pomme','orange','citron'] ]
Str = MultiArray[0,2] //Str prend la valeur « bleu »
MultiArray[1,1] = 'nouvelle orange'
Instructions if
Il existe deux formes d'instructions if : if...then...end if et if...then...else...end if. Comme dans le langage Basic standard, si l'expression conditionnelle
est vraie, les instructions sont exécutées. S'il y a une branche « else » et que l'expression est fausse, les instructions qui suivent « else » sont exécutées.
Exemples :
IF J <> 0 THEN
Result = 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
Les boucles « while »
Une boucle « while » sert à répéter des instructions tant qu'une condition de contrôle (expression) est évaluée comme vraie. La condition de l'
e de contrôle est évaluée avant les instructions. Par conséquent, si la condition de contrôle est fausse lors de la première itération, la séquence d'instructions «
» n'est jamais exécutée. La boucle « while » exécute la instruction qui la compose de manière répétée, en vérifiant l'expression avant l'
e à chaque itération. Tant que l'expression renvoie « True », l'exécution se poursuit.
Exemples :
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
Instructions de boucle
Script prend en charge les instructions de boucle. Les syntaxes possibles sont les suivantes :
Instructions DO WHILE expr LOOP
Instructions DO UNTIL expr LOOP
Instructions DO LOOP WHILE expr
Instruction DO LOOP UNTIL expr
Les instructions seront exécutées TANT QUE l'expression est vraie, ou JUSQU'À CE QUE l'expression soit vraie. Si l'expression se trouve avant les instructions, la condition de l'
e de contrôle sera évaluée avant l'itération. Sinon, la condition de contrôle sera vérifiée après l'itération.
Exemples :
FAIRE
K = I mod J
I = J
J = K
BOUCLE JUSQU'À CE QUE J = 0
FAIRE JUSQU'À CE QUE I >= 0
Écrire('Entrez une valeur (0..9) : ') Lire(I)
BOUCLE
DO
K = I mod J
I = J
J = K
LOOP WHILE J <> 0
DO WHILE I < 0
Write('Entrez une valeur (0..9) : ')
Readln(I)
LOOP
Pour les instructions
Scripter prend en charge les instructions présentant la syntaxe suivante : FOR compteur = valeurInitiale TO valeurFinale STEP incrément
NEXT.
Pour une instruction, le compteur est initialisé à la valeur initiale ; l'exécution de l'instruction est répétée jusqu'à ce que l'on atteigne « next », et la valeur du compteur est incrémentée d'une valeur de pas, jusqu'à ce que le compteur atteigne la valeur finale. La partie « step » est facultative ; si elle est omise, la valeur « stepValue » est considérée comme égale à 1 (
).
Exemples :
SCÉNARIO 1 :
FOR c = 1 TO 10 STEP 2
a = a + c
NEXT
SCÉNARIO 2 :
POUR i = a À b
j = i²
sum = sum + j
SUIVANT
Instructions SELECT CASE
Scripter prend en charge les instructions SELECT CASE selon la syntaxe suivante :
SELECT CASE expressionSelectrice
CASE expressionCas1
instruction1
CASE expression_case
instruction_case
CASE ELSE
instruction_else
END SELECT
Si l'expression de sélection correspond au résultat de l'une des expressions de case, les instructions correspondantes seront exécutées.
Sinon, l'instruction « else » sera exécutée. Le reste de l'instruction « case » est facultatif.
Exemple :
SELECT CASE uppercase(Fruit)
CASE 'lime' ShowMessage('vert')
CASE 'orange' ShowMessage('orange')
CASE 'apple' ShowMessage('rouge')
CASE ELSE ShowMessage('noir')
END SELECT |