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 EvaluateEvaluate(ProcNames[ProcIndex]);ProcNames[ProcIndex]
Per calcolare un'espressione di questo tipo, è possibile utilizzare il EvaluateExpr
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 ExitBreak
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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, ReadReadLnWriteln(String)Write(S)Write(LineFeed + CarriageReturn)
Per scrivere un file di testo, utilizzare la AssignFileReWriteWritelnCloseFileAssignFileResetReadlnCloseFileTry / Finally / End
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Le routine per le stringhe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Utilizzo degli insiemi in DelphiScript
Embarcadero Delphi SetIn+, -, *, = >=
DelphiScript non dispone di tipi di insiemi. Per utilizzare gli insiemi negli script DelphiScript, utilizzare le funzioni integrate; MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet
Operatori sugli insiemi
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
Funzione MkSet
La MkSet
Font.Style = MkSet(fsBold,fsItalic);
Il MkSet(fsBold,fsItalic) fsBoldfsItalic
Funzione MkSetRange
La MkSetRange
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
La MkSetRange(eTopLayer,eBottomLayer)eTopLayereBottomLayer
Funzione InSet
Questa InSetInA in BInSet(A, B)
If InSet(A,B) then ShowMessage('A is in B set') Else ShowMessage('A not in B set');
Funzione SetUnion
La SetUnion + A + BSetUnion(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 - A - BSetDifference(A, B)
Funzione SetIntersection
La SetIntersection * A * BSetIntersection(A, B)
Funzione SubSet
La SubSet=A = BSubSet(A, B)
Utilizzo dei gestori di eccezioni
La Try
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.
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 OnRaiseExcept
Try X := Y/Z; Except Raise('A divide by zero error!'); End;
Raise
La RaiseTryRaise
Raise(Format('Invalid Value Entered : %d', [Height]));
Si noti che, poiché la OnException