Funzioni

Di seguito vengono illustrate le istruzioni di funzione più comuni utilizzate dal linguaggio DelphiScript. La gamma di funzioni di DelphiScript è suddivisa in sezioni dedicate alle routine FileIO, alle routine matematiche, alle routine relative alle stringhe e alle routine di estensione.

Calcolo delle espressioni con la funzione Evaluate

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

Per calcolare un'espressione di questo tipo, è possibile utilizzare il Evaluate metodo in cui l'espressione è specificata dal Expr parametro. 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 che 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 Exit e Break per forzare l'uscita da una procedura prima che questa termini naturalmente. Ad esempio, se il valore di un parametro non è corretto, si potrebbe voler visualizzare 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 su 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é è un linguaggio non tipizzato, tutti i valori devono essere prima convertiti in stringhe.

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

Per scrivere un file di testo, utilizzare la AssignFile, ReWrite, Writeln e CloseFile . Per leggere un file di testo, utilizzare la procedura AssignFile, Reset, Readlne CloseFile . L'esempio seguente scrive su un file di testo e aggiunge un marcatore di fine riga. Si consiglia di utilizzare il Try / Finally / End si raccomanda di utilizzare il blocco per garantire la sicurezza degli script 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 consentono di manipolare stringhe o caratteri. Nella tabella sottostante è riportato solo un sottoinsieme delle routine per le stringhe (la maggior parte delle routine utilizzate 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 elencate nella tabella sottostante:

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 impacchettato con parametri, se presenti) negli script, in particolare se è necessario estrarre o impostare stringhe per i parametri dei processi. Alcune di queste 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

 

Utilizzo degli insiemi in DelphiScript

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

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

Operatori sugli insiemi

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

Funzione MkSet

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

Font.Style = MkSet(fsBold,fsItalic);

Il MkSet(fsBold,fsItalic) qui indica solo due elementi dell'insieme; fsBold e fsItalic.

Funzione MkSetRange

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

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

La MkSetRange(eTopLayer,eBottomLayer) funzione indica un intervallo di livelli compreso tra eTopLayer a eBottomLayer.

Funzione InSet

Questa InSet funzione viene utilizzata in sostituzione dell’ In . A in B è uguale 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 SetUnion funzione viene utilizzata in sostituzione dell’ + . A + B è uguale 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 SetDifference funzione viene utilizzata in sostituzione dell’operatore - . A - B è uguale a SetDifference(A, B).

Funzione SetIntersection

La SetIntersection funzione viene utilizzata in sostituzione dell’ * . A * B è uguale a SetIntersection(A, B).

Funzione SubSet

La SubSet funzione viene utilizzata in sostituzione dell'operatore = . A = B è uguale a SubSet(A, B).

Utilizzo dei gestori di eccezioni

La 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 dal blocco Try, un'istruzione Exit o Break. Utilizzare il blocco Try-Finally per liberare oggetti temporanei e altre risorse e per eseguire operazioni 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 i casi eccezionali. Ad esempio, per intercettare eccezioni specifiche e utilizzarle in modo utile, come registrarle in un log degli errori o creare una finestra di dialogo intuitiva. Poiché la On parola chiave non è supportata in DelphiScript, l’ Raise istruzione viene utilizzata all'interno del Except blocco.

Example:

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

Raise

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

Example:

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

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

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

Le funzionalità a tua disposizione dipendono dalla soluzione Altium di cui disponi: Altium Develop, Altium Agile Teams, Altium Agile Enterprise oppure Altium Designer (con abbonamento attivo).

Se non vedi una funzionalità documentata nel software che stai effettivamente utilizzando, contatta il reparto 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