Fonctions
Les instructions de fonction courantes utilisées par le langage DelphiScript sont présentées ci-dessous. L’éventail des fonctions DelphiScript est présenté dans des sections consacrées aux routines FileIO, aux routines mathématiques, aux routines de chaînes et aux routines d’extension.
Calcul des expressions avec la fonction Evaluate
La fonction intégrée Evaluate interprète une chaîne contenant une expression mathématique valide à l’exécution et renvoie un résultat. Par exemple, vous pouvez écrire un script tel que Evaluate(ProcNames[ProcIndex]); et la procédure spécifiée dans ProcNames[ProcIndex] sera appelée.
Pour calculer une telle expression, vous pouvez utiliser la méthode Evaluate où l’expression est spécifiée par le paramètre Expr. Par exemple, vous pouvez calculer des expressions telles que les suivantes :
Evaluate('2+5');
Evaluate('((10+15)-5)/2*5');
Evaluate('sin(3.1415926/2)*10');
Evaluate('2.5*log(3)');
Passage de paramètres aux fonctions et procédures
Les fonctions comme les procédures définies dans un script peuvent être déclarées de manière à accepter des paramètres. En outre, les fonctions sont définies pour renvoyer une valeur. Les types de paramètres dans les déclarations de procédure/fonction sont ignorés et peuvent être omis. Par exemple, ce code est correct :
Function sum(a, b) : integer;
Begin
Result := a + b;
End;
Quitter une procédure
DelphiScript fournit les instructions Exit et Break pour forcer une procédure à se terminer avant sa fin naturelle. Par exemple, si la valeur d’un paramètre ne convient pas, vous pouvez vouloir afficher un avertissement à l’utilisateur et quitter, comme le montre l’exemple ci-dessous.
Procedure DisplayName (s);
Begin
If s = '' Then
Begin
ShowMessage('Please enter a name');
Exit;
End;
ShowMessage(S + ' is shown');
End;
Routines d’E/S de fichier
DelphiScript dispose des routines d’E/S suivantes :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DelphiScript vous permet d’écrire des informations dans un fichier texte et, comme DelphiScript est un langage non typé, toutes les valeurs doivent d’abord être converties en chaînes.
Ici, les routines Read et ReadLn sont équivalentes — elles lisent une ligne jusqu’à la ligne suivante, sans l’inclure. Une routine Writeln(String) est équivalente à une routine Write(S) et à une routine Write(LineFeed + CarriageReturn).
Pour écrire dans un fichier texte, utilisez les procédures AssignFile, ReWrite, Writeln et CloseFile. Pour lire un fichier texte, utilisez les procédures AssignFile, Reset, Readln et CloseFile. L’exemple ci-dessous écrit dans un fichier texte et ajoute un marqueur de fin de ligne. L’utilisation du bloc Try / Finally / End est recommandée pour sécuriser les scripts en cas d’échec d’E/S.
Example:
Var
InputFile : TextFile;
OutputFile : TextFile;
I : Integer;
Line : String;
Begin
AssignFile(OutputFile,eConvertedFile.Text);
Rewrite(OutputFile);
AssignFile(InputFIle,eOriginalFIle.Text);
Reset(InputFile);
Try
While not EOF(InputFile) do
Begin
Readln(InputFile,Line);
For I := 1 to Length(Line) Do
Line[I] := UpperCase(Line[I]);
Writeln(Outputfile, Line);
End;
Finally
CloseFile(InputFile);
CloseFile(OutputFile);
End;
End;
Routines mathématiques
DelphiScript dispose des routines mathématiques suivantes :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Routines de chaînes
DelphiScript dispose des routines de chaînes suivantes, qui peuvent manipuler des chaînes ou des caractères. Seul un sous-ensemble des routines de chaînes (la plupart des routines de chaînes utilisées par DelphiScript sont importées depuis l’unité SysUtils d’Embarcadero Delphi) est présenté dans le tableau ci-dessous :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Les routines de chaînes not prises en charge par DelphiScript sont présentées dans le tableau ci-dessous :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Routines d’extension
Les routines d’extension sont utilisées lors du traitement des processus serveur dans les scripts (une commande est un processus serveur encapsulé avec ses paramètres, le cas échéant), en particulier si vous devez extraire ou définir des chaînes pour les paramètres des processus. Certaines de ces routines sont listées ci-dessous.
Pour exécuter les paramètres des processus dans un script, les fonctions suivantes peuvent être nécessaires :
|
|
|
|
|
|
|
|
|
Useful functions:
|
|
|
|
|
|
|
|
|
Useful dialogs:
|
|
|
|
|
|
Utilisation des ensembles dans DelphiScript
Les mots-clés Set et In d’Embarcadero Delphi, ainsi que les opérateurs d’ensemble +, -, *, <= et >=, ne sont pas pris en charge dans DelphiScript. Les mots-clés équivalents des opérateurs d’ensemble sont répertoriés dans le tableau ci-dessous.
DelphiScript ne possède pas de types ensemble. Pour utiliser des ensembles dans des scripts DelphiScript, utilisez les fonctions intégrées MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection et SubSet, qui permettent de manipuler des ensembles dans un script DelphiScript. Elles sont décrites plus en détail ci-dessous.
Opérateurs d’ensemble
Embarcadero Delphi Set Operator keyword |
Equivalent DelphiScript Set Operator keyword |
|---|---|
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
Fonction MkSet
La fonction MkSet est un constructeur d’ensemble avec un nombre variable d’arguments. Par exemple :
Font.Style = MkSet(fsBold,fsItalic);
Ici, MkSet(fsBold,fsItalic) désigne seulement deux éléments d’ensemble : fsBold et fsItalic.
Fonction MkSetRange
La fonction MkSetRange est un constructeur d’ensemble avec une plage d’arguments. Par exemple :
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
La fonction MkSetRange(eTopLayer,eBottomLayer) désigne une plage de couches allant de eTopLayer à eBottomLayer.
Fonction InSet
Cette fonction InSet est utilisée en remplacement de l’opérateur In de Delphi. A in B est égal à InSet(A, B).
If InSet(A,B) then
ShowMessage('A is in B set')
Else
ShowMessage('A not in B set');
Fonction SetUnion
La fonction SetUnion est utilisée en remplacement de l’opérateur + de Delphi. A + B est égal à SetUnion(A, B).
ASet := BSet + CSet;
// should be changed to:
ASet := SetUnion(BSet,CSet);
// in order to achieve the desired script result.
Fonction SetDifference
La fonction SetDifference est utilisée en remplacement de l’opérateur - de Delphi. A - B est égal à SetDifference(A, B).
Fonction SetIntersection
La fonction SetIntersection est utilisée en remplacement de l’opérateur * de Delphi. A * B est égal à SetIntersection(A, B).
Fonction SubSet
La fonction SubSet est utilisée en remplacement de l’opérateur <= d’Object Pascal. A <= B est égal à SubSet(A, B).
Utilisation des gestionnaires d’exceptions
Le mot-clé Try introduit une instruction Try-Except ou une instruction Try-Finally. Ces deux instructions sont liées, mais servent des objectifs différents :
Try-Finally
Avec Try-Finally, les instructions du bloc Finally sont toujours exécutées qu’une exception provenant du bloc Try, un Exit ou un Break se produise ou non. Utilisez le bloc Try-Finally pour libérer les objets temporaires et autres ressources et pour effectuer les opérations de nettoyage.
En général, une seule instruction Try-Finally est nécessaire dans une sous-routine.
Example:
Reset(F);
Try
// process file F
Finally
CloseFile(F);
End;
Try-Except
Utilisez Try-Except pour gérer les cas exceptionnels. Par exemple, pour intercepter des exceptions spécifiques et en faire quelque chose d’utile, comme les consigner dans un journal d’erreurs ou créer une boîte de dialogue conviviale. Comme le mot-clé On n’est pas pris en charge dans DelphiScript, l’instruction Raise est utilisée à l’intérieur du bloc Except.
Example:
Try
X := Y/Z;
Except
Raise('A divide by zero error!');
End;
Raise
Le mot-clé Raise est lié au mot-clé Try. Le mot-clé Raise peut être utilisé sans paramètre pour relancer la dernière exception. Il peut également être utilisé avec un paramètre de chaîne pour lever une exception avec un message spécifique.
Example:
Raise(Format('Invalid Value Entered : %d', [Height]));
Notez que, puisque le mot-clé On n’est pas pris en charge, les objets Exception (disponibles dans Embarcadro Delphi) ne peuvent pas être utilisés.