Funções

As instruções de função comuns utilizadas pela linguagem DelphiScript são apresentadas abaixo. O conjunto de funções do DelphiScript é apresentado em secções para rotinas de FileIO, rotinas matemáticas, rotinas de strings e rotinas de extensão.

Cálculo de Expressões com a Função Evaluate

A função incorporada Evaluate interpreta uma string que contém uma expressão matemática válida durante o tempo de execução e é devolvido um resultado. Por exemplo, pode escrever um script como Evaluate(ProcNames[ProcIndex]); e o procedimento especificado em ProcNames[ProcIndex] será chamado.

Para calcular essa expressão, pode utilizar o método Evaluate em que a expressão é especificada pelo parâmetro Expr. Por exemplo, pode calcular expressões como as seguintes:

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 procedimento/função 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 as instruções Exit e Break para forçar a saída de um procedimento antes de este terminar naturalmente. Por exemplo, se o valor de um parâmetro não for adequado, poderá querer emitir um aviso ao utilizador e sair, como mostra o exemplo abaixo.

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

Rotinas de IO de Ficheiros

O DelphiScript tem as seguintes rotinas de IO:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

O DelphiScript permite-lhe escrever informações num ficheiro de texto e, como o DelphiScript é uma linguagem sem tipos, todos os valores têm primeiro de ser convertidos em strings.

Aqui, as rotinas Read e ReadLn são equivalentes — leem uma linha até, mas sem incluir, a linha seguinte. Uma rotina Writeln(String) é equivalente a uma rotina Write(S) e Write(LineFeed + CarriageReturn).

Para escrever num ficheiro de texto, utilize os procedimentos AssignFile, ReWrite, Writeln e CloseFile. Para ler um ficheiro de texto, utilize os procedimentos AssignFile, Reset, Readln e CloseFile. O exemplo abaixo escreve num ficheiro de texto e adiciona um marcador de fim de linha. Recomenda-se a utilização do bloco Try / Finally / End para tornar os scripts seguros no caso de uma falha de IO.

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;

Rotinas Matemáticas

O DelphiScript tem as seguintes rotinas matemáticas:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Rotinas de Strings

O DelphiScript tem as seguintes rotinas de strings, que podem manipular strings ou caracteres. Apenas um subconjunto das rotinas de strings (a maioria das rotinas de strings utilizadas pelo DelphiScript é importada da unidade SysUtils do Embarcadero Delphi) é apresentado na tabela abaixo:

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

 

 

As rotinas de strings que são not suportadas pelo DelphiScript estão indicadas na tabela abaixo:

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

 

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, caso existam) em scripts, especialmente se precisar de extrair ou definir strings para os parâmetros dos processos. Algumas das rotinas estão listadas abaixo.

Para executar parâmetros de processos num script, poderão ser necessárias as seguintes funções:

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

 

Utilizar Conjuntos no DelphiScript

As palavras-chave Set e In do Embarcadero Delphi, e os operadores de conjunto +, -, *, <= e >=, não são suportados no DelphiScript. As palavras-chave equivalentes dos Operadores de Conjunto estão indicadas na tabela abaixo.

O DelphiScript não tem tipos de conjunto. Para utilizar conjuntos em scripts DelphiScript, use as funções incorporadas MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection e SubSet, que permitem manipular conjuntos num script DelphiScript. Estas são descritas com mais detalhe abaixo.

Operadores de Conjunto

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

Função MkSet

A função MkSet é um construtor de conjuntos com um número variável de argumentos. Por exemplo:

Font.Style = MkSet(fsBold,fsItalic);

A MkSet(fsBold,fsItalic)  aqui denota apenas dois elementos de conjunto: fsBold e fsItalic.

Função MkSetRange

A função MkSetRange é um construtor de conjuntos com um intervalo de argumentos. Por exemplo:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

A função MkSetRange(eTopLayer,eBottomLayer) denota um intervalo de camadas de eTopLayer até eBottomLayer.

Função InSet

Esta função InSet é utilizada como substituição do operador In do Delphi. A in B é igual a InSet(A, B).

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

Função SetUnion

A função SetUnion é utilizada como substituição do operador + do Delphi. A + B é igual a SetUnion(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 função SetDifference é utilizada como substituição do operador - do Delphi. A - B é igual a SetDifference(A, B).

Função SetIntersection

A função SetIntersection é utilizada como substituição do operador * do Delphi. A * B é igual a SetIntersection(A, B).

Função SubSet

A função SubSet é utilizada como substituição do operador <= de Object Pascal. A <= B é igual a SubSet(A, B).

Utilizar Processadores de Exceções

A palavra-chave Try introduz uma instrução Try-Except ou uma instrução Try-Finally. Estas duas instruções estão relacionadas, mas servem finalidades diferentes:

Try-Finally

Com Try-Finally, as instruções no bloco Finally são sempre executadas independentemente de ocorrer uma exceção no bloco Try, Exit ou Break. Utilize o bloco Try-Finally para libertar objetos temporários e outros recursos e para realizar atividades de limpeza.

Normalmente, apenas é necessária uma instrução Try-Finally numa subrotina.

Example:

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

Try-Except

Utilize Try-Except para tratar casos excecionais. Por exemplo, para capturar exceções específicas e fazer algo útil com elas, como registá-las num registo de erros ou criar uma caixa de diálogo amigável. Uma vez que a palavra-chave On não é suportada no DelphiScript, a instrução Raise é utilizada dentro do bloco Except.

Example:

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

Raise

A palavra-chave Raise está relacionada com a palavra-chave Try. A palavra-chave Raise pode ser utilizada sem parâmetros para voltar a lançar a última exceção. Também pode ser utilizada com um parâmetro string para lançar uma exceção com uma mensagem específica.

Example:

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

Note que, uma vez que a palavra-chave On não é suportada, os objetos Exception (disponíveis no Embarcadro Delphi) não podem ser utilizados.

AI-LocalizedLocalizado por IA
Caso encontre um problema, selecione o texto/imagem e primaCtrl + Enterpara nos enviar o seu feedback.
Disponibilidade de Funcionalidades

As funcionalidades disponíveis dependem da solução Altium que possui – Altium Develop, uma edição do Altium Agile (Agile Teams ou Agile Enterprise), ou Altium Designer (com subscrição ativa).

Se não encontrar uma funcionalidade mencionada no seu software, contacte a equipa de Vendas da Altium para saber mais.

Documentação Legada

A documentação do Altium Designer já não é versionada. Se precisar de aceder à documentação de versões anteriores do Altium Designer, visite a secção Documentação Legada da página de Outros Instaladores.

Conteúdo