Funções
As instruções de função mais comuns utilizadas pela linguagem DelphiScript são abordadas a seguir. O conjunto de funções do DelphiScript é apresentado em secções dedicadas às rotinas de E/S de ficheiros, às rotinas matemáticas, às rotinas de cadeias de caracteres e às rotinas de extensão.
Cálculo de expressões com a função Evaluate
A função incorporada EvaluateEvaluate(ProcNames[ProcIndex]);ProcNames[ProcIndex]
Para calcular uma expressão deste tipo, pode utilizar o EvaluateExpr
Evaluate('2+5'); Evaluate('((10+15)-5)/2*5'); Evaluate('sin(3.1415926/2)*10'); Evaluate('2.5*log(3)');
Passagem de parâmetros para funções e procedimentos
Tanto as funções como os procedimentos definidos num script podem ser declarados para aceitar parâmetros. Além disso, as funções são definidas para devolver um valor. Os tipos de parâmetros nas declarações de procedimentos/funções são ignorados e podem ser omitidos. Por exemplo, este código está correto:
Function sum(a, b) : integer; Begin Result := a + b; End;
Sair de um procedimento
O DelphiScript fornece ExitBreak
Procedure DisplayName (s); Begin If s = '' Then Begin ShowMessage('Please enter a name'); Exit; End; ShowMessage(S + ' is shown'); End;
Rotinas de E/S de ficheiros
O DelphiScript dispõe das seguintes rotinas de E/S:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
O DelphiScript permite-lhe gravar informações num ficheiro de texto e, uma vez que o DelphiScript é uma linguagem sem tipos, todos os valores têm de ser convertidos em cadeias de caracteres primeiro.
Aqui, ReadReadLnWriteln(String)Write(S)Write(LineFeed + CarriageReturn)
Para gravar um ficheiro de texto, utilize a 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;
Rotinas matemáticas
O DelphiScript dispõe das seguintes rotinas matemáticas:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rotinas de cadeias de caracteres
O DelphiScript dispõe das seguintes rotinas de cadeias de caracteres, que permitem manipular cadeias de caracteres ou caracteres individuais. Apenas um subconjunto das rotinas de cadeias de caracteres (a maioria das rotinas utilizadas pelo DelphiScript é importada da unidade SysUtils do Embarcadero Delphi) é apresentado na tabela abaixo:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
As rotinas de cadeias de caracteres
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rotinas de extensão
As rotinas de extensão são utilizadas ao lidar com processos de servidor (um comando é um processo de servidor empacotado com parâmetros, se houver) em scripts, especialmente se for necessário extrair ou definir cadeias de caracteres para os parâmetros dos processos. Algumas dessas rotinas estão listadas abaixo.
Para executar parâmetros de processos num script, podem ser necessárias as seguintes funções:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Utilização de conjuntos no DelphiScript
O Embarcadero Delphi's SetIn+, -, *, = >=
O DelphiScript não possui tipos de conjuntos. Para utilizar conjuntos em scripts do DelphiScript, utilize as funções integradas; MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet
Operadores de conjuntos
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
Função MkSet
A MkSet
Font.Style = MkSet(fsBold,fsItalic);
O MkSet(fsBold,fsItalic) fsBoldfsItalic
Função MkSetRange
A MkSetRange
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
A MkSetRange(eTopLayer,eBottomLayer)eTopLayereBottomLayer
Função InSet
Esta InSetInA in BInSet(A, B)
If InSet(A,B) then ShowMessage('A is in B set') Else ShowMessage('A not in B set');
Função SetUnion
A SetUnion + A + BSetUnion(A, B)
ASet := BSet + CSet; // should be changed to: ASet := SetUnion(BSet,CSet); // in order to achieve the desired script result.
Função SetDifference
A SetDifference - A - BSetDifference(A, B)
Função SetIntersection
A SetIntersection * A * BSetIntersection(A, B)
Função SubSet
A SubSet=A = BSubSet(A, B)
Utilização de manipuladores de exceções
A Try
Try-Finally
Com Try-Finally, as instruções no bloco Finally são sempre executadas, independentemente de ocorrer uma exceção do bloco Try, de um Exit ou de um Break. Utilize o bloco Try-Finally para libertar objetos temporários e outros recursos e para realizar atividades de limpeza.
Normalmente, é necessária apenas uma instrução Try-Finally numa sub-rotina.
Reset(F); Try // process file F Finally CloseFile(F); End;
Try-Except
Utilize o Try-Except para tratar casos excecionais. Por exemplo, para detetar exceções específicas e realizar ações úteis com elas, tais como registá-las num registo de erros ou criar uma caixa de diálogo intuitiva. Uma vez que a OnRaiseExcept
Try X := Y/Z; Except Raise('A divide by zero error!'); End;
Raise
A RaiseTryRaise
Raise(Format('Invalid Value Entered : %d', [Height]));
Note que, uma vez que a OnException