Functions

Old Content - visit altium.com/documentation

Parent page: DelphiScript

The common function statements used by the DelphiScript language are covered below. The range of DelphiScript functions are presented in sections for FileIO routines, Math routines, String routines and Extension routines.

Calculating Expressions with the Evaluate function

The built in function Evaluate interprets a string containing a valid mathematical expression during runtime and a result is returned. For example, you can write a script such as Evaluate(ProcNames[ProcIndex]); and the procedure specified in ProcNames[ProcIndex] will be called.

To calculate such an expression you can use Evaluate method where expression is specified by Expr parameter. For example, you can calculate expressions such as the following:

Evaluate('2+5');
Evaluate('((10+15)-5)/2*5');
Evaluate('sin(3.1415926/2)*10');
Evaluate('2.5*log(3)');

Passing Parameters to Functions and Procedures

Both functions and procedures defined in a script can be declared to accept parameters. Additionally, functions are defined to return a value. Types of parameters in procedure/function declarations are ignored and can be skipped. For example, this code is correct:

Function sum(a, b) : integer;
Begin
  Result := a + b;
End;

Exiting from a Procedure

DelphiScript provides Exit and Break statements to force a procedure to exit before it would terminate naturally. For example; if the value of a parameter is not suitable, you might want to issue a warning to the user and exit, as the example below shows.

Procedure DisplayName (s);
Begin
  If s = '' Then
  Begin
    ShowMessage('Please enter a name');
    Exit;
  End;
  ShowMessage(S + ' is shown');
End;

File IO Routines

DelphiScript has the following IO routines:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript gives you the ability to write information to a text file, and since DelphiScript is an untyped language, all values must be converted to strings first.

Here, Read and ReadLn routines are equivalent — they read a line up to, but not including, the next line. A Writeln(String) routine is equivalent to a Write(S) and a Write(LineFeed + CarriageReturn) routine.

To write out a text file, employ the AssignFile, ReWrite, Writeln and CloseFile procedures. To read in a text file, use the AssignFile, Reset, Readln and CloseFile procedures. The below example writes to a text file and adds an end-of-line marker. Using the Try / Finally / End block is recommended, to make scripts secure in the event of an IO failure.

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;

Math Routines

DelphiScript has the following math routines:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

String Routines

DelphiScript has the following string routines, which can manipulate strings or characters. Only a subset of string routines (most of the string routines used by DelphiScript are imported from the Embarcadero Delphi's SysUtils unit) are shown in this table below:

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

 

 

String routines that are not supported by DelphiScript are outlined in the table below:

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

 

Extension Routines

Extension routines are used when dealing with server processes (a command is a packaged server process with parameters, if any) in scripts, especially if you need to extract or set strings for the parameters of processes. Some of the routines are listed below.

To execute parameters of processes in a script, the following functions may be needed:

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

 

Using Sets in DelphiScript

Embarcadero Delphi's Set and In keywords, and the set operators +, -, *, <= and >= are not supported in DelphiScript. The equivalent Set Operator keywords are tabulated below.

DelphiScript has no set types. To use sets in DelphiScript scripts, use the built-in functions; MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection and SubSet functions which enable sets to be manipulated in a DelphiScript script. These are described in more detail below.

Set Operators

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

MkSet function

The MkSet function is a set constructor with a variable number of arguments. For example:

Font.Style = MkSet(fsBold,fsItalic);

The MkSet(fsBold,fsItalic)here denotes two set elements only; fsBold and fsItalic.

MkSetRange function

The MkSetRange function is a set contructor with a range of arguments. For example:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

The MkSetRange(eTopLayer,eBottomLayer) function denotes a range of layers from eTopLayer to eBottomLayer.

InSet function

This InSet function is used as substitution of Delphi's In operator. A in B is equal to InSet(A, B).

If InSet(A,B) then
  ShowMessage('A is in B set')
Else
  ShowMessage('A not in B set');

SetUnion function

The SetUnion function is used as substitution of Delphi's + operator. A + B is equal to SetUnion(A, B).

ASet := BSet + CSet;
// should be changed to:
ASet := SetUnion(BSet,CSet);
// in order to achieve the desired script result.

SetDifference function

The SetDifference function is used as substitution of Delphi's - operator. A - B is equal to SetDifference(A, B).

SetIntersection function

The SetIntersection function is used as substitution of Delphi's * operator. A * B is equal to SetIntersection(A, B).

SubSet function

The SubSet function is used as substitution of Object Pascal's <= operator. A <= B is equal to SubSet(A, B).

Using Exception Handlers

The Try keyword introduces a try-except statement or a try-finally statement. These two statements are related but serve different purposes:

Try Finally

With Try-Finally, the statements in the Finally block are always executed, regardless of whether an exception from the Try block, Exit or Break occurs. Use try-finally block to free temporary objects and other resources, and to perform clean up activities.

Typically, only one try-finally statement is needed in a subroutine.

Example:

Reset(F);
Try
  // process file F
Finally
  CloseFile(F);
End;

Try Except

Use Try-Except to handle exceptional cases. For example, to catch specific exceptions and do something useful with them, such as log them in an error log or create a friendly dialog box. Since the On keyword is not supported in DelphiScript, the Raise statement is used inside the Except block.

Example:

Try
  X := Y/Z;
Except
  Raise('A divide by zero error!');
End;

Raise

The Raise keyword is related to the Try keyword. The Raise keyword can be used without parameters to re-raise the last exception. It can also be used with a string parameter to raise an exception using a specific message.

Example:

Raise(Format('Invalid Value Entered : %d', [Height]));

Note that since the On keyword is not supported, the Exception objects (available in Embarcadro Delphi) cannot be used.

 

You are reporting an issue with the following selected text and/or image within the active document:
ALTIUM DESIGNER FREE TRIAL
Altium Designer Free Trial
Let’s get started. First off, are you or your organization already using Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

In that case, why do you need an evaluation license?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You actually don’t need an evaluation license for that.

Click the button below to download the latest Altium Designer installer.

Download Altium Designer Installer

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Please fill out the form below to get a quote for a new seat of Altium Designer.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

If you are on Altium Subscription, you don’t need an evaluation license.

If you are not an active Altium Subscription member, please fill out the form below to get your free trial.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Why are you looking to evaluate Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

You came to the right place! Please fill out the form below to get your free trial started.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Sounds exciting! Did you know we offer special discounted student licenses? For more information, click here.

In the meantime, feel free to request a free trial by filling out the form below.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

That’s great! Making things is awesome. We have the perfect program for you.

Upverter is a free community-driven platform designed specifically to meet the needs of makers like you.

Click here to give it a try!

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.