Funzioni

Di seguito sono descritte le istruzioni di funzione comuni utilizzate dal linguaggio DelphiScript. La gamma di funzioni di DelphiScript è presentata in sezioni dedicate alle routine FileIO, alle routine matematiche, alle routine per le stringhe e alle routine di estensione.

Calcolo di espressioni con la funzione Evaluate

La funzione incorporata Evaluate interpreta una stringa contenente un’espressione matematica valida durante il runtime e restituisce un risultato. Ad esempio, è possibile scrivere uno script come Evaluate(ProcNames[ProcIndex]); e verrà chiamata la procedura specificata in ProcNames[ProcIndex].

Per calcolare un’espressione di questo tipo, è possibile usare il metodo Evaluate dove l’espressione è specificata dal parametro Expr. Ad esempio, è possibile calcolare espressioni come le seguenti:

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

Passaggio di parametri a funzioni e procedure

Sia le funzioni sia le procedure definite in uno script possono essere dichiarate in modo da accettare parametri. Inoltre, le funzioni sono definite per restituire un valore. I tipi dei parametri nelle dichiarazioni di procedure/funzioni vengono ignorati e possono essere omessi. Ad esempio, questo codice è corretto:

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

Uscita da una procedura

DelphiScript fornisce le istruzioni Exit e Break per forzare l’uscita da una procedura prima che termini naturalmente. Ad esempio, se il valore di un parametro non è adatto, si potrebbe voler mostrare un avviso all’utente e uscire, come mostra l’esempio seguente.

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

Routine di I/O file

DelphiScript dispone delle seguenti routine di I/O:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript consente di scrivere informazioni in un file di testo e, poiché DelphiScript è un linguaggio non tipizzato, tutti i valori devono prima essere convertiti in stringhe.

Qui, le routine Read e ReadLn sono equivalenti: leggono una riga fino alla riga successiva, esclusa. Una routine Writeln(String) è equivalente a una routine Write(S) e Write(LineFeed + CarriageReturn).

Per scrivere un file di testo, utilizzare le procedure AssignFile, ReWrite, Writeln e CloseFile. Per leggere un file di testo, utilizzare le procedure AssignFile, Reset, Readln e CloseFile. L’esempio seguente scrive in un file di testo e aggiunge un marcatore di fine riga. Si consiglia di usare il blocco Try / Finally / End per rendere gli script sicuri in caso di errore di I/O.

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;

Routine matematiche

DelphiScript dispone delle seguenti routine matematiche:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Routine per le stringhe

DelphiScript dispone delle seguenti routine per le stringhe, che possono manipolare stringhe o caratteri. Nella tabella seguente è mostrato solo un sottoinsieme delle routine per le stringhe (la maggior parte delle routine per le stringhe usate da DelphiScript è importata dall’unità SysUtils di Embarcadero Delphi):

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

 

 

Le routine per le stringhe not supportate da DelphiScript sono riportate nella tabella seguente:

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

 

Routine di estensione

Le routine di estensione vengono utilizzate quando si gestiscono processi server (un comando è un processo server confezionato con eventuali parametri) negli script, soprattutto se è necessario estrarre o impostare stringhe per i parametri dei processi. Alcune delle routine sono elencate di seguito.

Per eseguire i parametri dei processi in uno script, potrebbero essere necessarie le seguenti funzioni:

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

 

Uso degli insiemi in DelphiScript

Le parole chiave Set e In di Embarcadero Delphi, e gli operatori di insieme +, -, *, <= e >=, non sono supportati in DelphiScript. Le parole chiave equivalenti per gli operatori di insieme sono riportate nella tabella seguente.

DelphiScript non dispone di tipi insieme. Per usare gli insiemi negli script DelphiScript, utilizzare le funzioni incorporate MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection e SubSet, che consentono di manipolare gli insiemi in uno script DelphiScript. Queste sono descritte più dettagliatamente di seguito.

Operatori di insieme

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

Funzione MkSet

La funzione MkSet è un costruttore di insiemi con un numero variabile di argomenti. Ad esempio:

Font.Style = MkSet(fsBold,fsItalic);

Qui MkSet(fsBold,fsItalic)  indica solo due elementi dell’insieme: fsBold e fsItalic.

Funzione MkSetRange

La funzione MkSetRange è un costruttore di insiemi con un intervallo di argomenti. Ad esempio:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

La funzione MkSetRange(eTopLayer,eBottomLayer) indica un intervallo di layer da eTopLayer a eBottomLayer.

Funzione InSet

Questa funzione InSet viene utilizzata in sostituzione dell’operatore In di Delphi. A in B è equivalente a InSet(A, B).

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

Funzione SetUnion

La funzione SetUnion viene utilizzata in sostituzione dell’operatore + di Delphi. A + B è equivalente a SetUnion(A, B).

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

Funzione SetDifference

La funzione SetDifference viene utilizzata in sostituzione dell’operatore - di Delphi. A - B è equivalente a SetDifference(A, B).

Funzione SetIntersection

La funzione SetIntersection viene utilizzata in sostituzione dell’operatore * di Delphi. A * B è equivalente a SetIntersection(A, B).

Funzione SubSet

La funzione SubSet viene utilizzata in sostituzione dell’operatore <= di Object Pascal. A <= B è equivalente a SubSet(A, B).

Uso dei gestori di eccezioni

La parola chiave Try introduce un’istruzione Try-Except o un’istruzione Try-Finally. Queste due istruzioni sono correlate ma hanno scopi diversi:

Try-Finally

Con Try-Finally, le istruzioni nel blocco Finally vengono sempre eseguite indipendentemente dal fatto che si verifichi un’eccezione nel blocco Try, oppure un Exit o un Break. Utilizzare il blocco Try-Finally per liberare oggetti temporanei e altre risorse e per eseguire attività di pulizia.

In genere, in una subroutine è necessaria una sola istruzione Try-Finally.

Example:

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

Try-Except

Utilizzare Try-Except per gestire casi eccezionali. Ad esempio, per intercettare eccezioni specifiche e fare qualcosa di utile con esse, come registrarle in un log degli errori o creare una finestra di dialogo intuitiva. Poiché la parola chiave On non è supportata in DelphiScript, all’interno del blocco Except viene utilizzata l’istruzione Raise.

Example:

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

Raise

La parola chiave Raise è correlata alla parola chiave Try. La parola chiave Raise può essere usata senza parametri per rilanciare l’ultima eccezione. Può anche essere usata con un parametro stringa per generare un’eccezione con un messaggio specifico.

Example:

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

Si noti che, poiché la parola chiave On non è supportata, gli oggetti Exception (disponibili in Embarcadro Delphi) non possono essere utilizzati.

AI-LocalizedLocalizzato tramite A
Se trovi un problema, seleziona il testo/l’immagine e premi Ctrl + Invio per inviarci il tuo feedback.
Disponibilità delle funzionalità

Le funzionalità disponibili dipendono dalla soluzione Altium in uso – Altium Develop, un’edizione di Altium Agile (Agile Teams o Agile Enterprise), oppure Altium Designer (con licenza attiva).

Se non vedi nel tuo software una funzionalità descritta,  contatta il team vendite di Altium per saperne di più.

Documentazione legacy

La documentazione di Altium Designer non è più suddivisa per versione. Se è necessario accedere alla documentazione delle versioni precedenti di Altium Designer, visitare la sezione Documentazione legacy della pagina Altri programmi di installazione.

Contenuto