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 :

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

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 :

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

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 :

AnsiCompareStr

AnsiCompareText

AnsiDequotedStr

AnsiExtractQuotedStr

AnsiLowerCase

AnsiPos

AnsiQuotedStr

AnsiSameStr

AnsiSameText

AnsiUpperCase

CompareStr

CompareText

Copy

Delete

FloatToStr

FloatToStrF

Format

Frac

Insert

Int

IsDelimiter

LastDelimiter

Length

LowerCase

Ord

Pos

Pred

QuotedStr

Round

SameText

SetLength

StringOfChar

StringToGUID

Succ

Trim

TrimLeft

TrimRight

UpCase

UpperCase

WideUpperCase

WideLowerCase

WideSameStr

WideSameText

 

 

Les routines de chaînes not prises en charge par DelphiScript sont présentées dans le tableau ci-dessous :

AnsiContainsStr

AnsiContainsText

AnsiEndsStr

AnsiEndsText

AnsiIndexText

AnsiMatchStr

AnsiMatchText

AnsiReplaceStr

AnsiReplaceText

AnsiResemblesProc

AnsiResemblesText

AnsiStartsStr

AnsiStartsText

Concat

DecodeSoundExInt

DecodeSoundExWord

DupeString

LeftStr

MidStr

NullStr

ReverseString

RightStr

SetString

SoundEx

SoundExCompare

SoundExInt

SoundExProc

SoundExSimilar

SoundExWord

Str

StuffString

Val

 

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 :

AddColorParameter

AddIntegerParameter

AddLongIntParameter

AddSingleParameter

AddWordParameter

GetIntegerParameter

GetStringParameter

ResetParameters

RunProcess

Useful functions:

SetCursorBusy

ResetCursor

CheckActiveServer

GetActiveServerName

GetCurrentDocumentFileName

RunApplication

SaveCurrentDocument

 

 

Useful dialogs:

ConfirmNoYes

ConfirmNoYesCancel

ShowError

ShowInfo

ShowWarning

 

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

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

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.

AI-LocalizedAI-localized
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Feature Availability

The features available to you depend on which Altium solution you have – Altium Develop, an edition of Altium Agile (Agile Teams or Agile Enterprise), or Altium Designer (on active term).

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Legacy Documentation

Altium Designer documentation is no longer versioned. If you need to access documentation for older versions of Altium Designer, visit the Legacy Documentation section of the Other Installers page.

Contenu