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 Evaluate interpreta uma cadeia de caracteres que contenha uma expressão matemática válida durante a execução e devolve um resultado. Por exemplo, pode escrever um script como Evaluate(ProcNames[ProcIndex]); e o procedimento especificado em ProcNames[ProcIndex] será chamado.

Para calcular uma expressão deste tipo, pode utilizar o Evaluate método, em que a expressão é especificada pelo Expr parâmetro. 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 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 Exit e Break para forçar um procedimento a sair antes de 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 E/S de ficheiros

O DelphiScript dispõe das seguintes rotinas de E/S:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

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, Read e ReadLn rotinas são equivalentes — leem uma linha até à linha seguinte, sem a incluir. Uma Writeln(String) rotina é equivalente a uma Write(S) e a Write(LineFeed + CarriageReturn) rotina.

Para gravar um ficheiro de texto, utilize a AssignFile, ReWrite, Writeln e CloseFile . Para ler um ficheiro de texto, utilize o AssignFile, Reset, Readlne CloseFile procedimentos. O exemplo abaixo escreve num ficheiro de texto e adiciona um marcador de fim de linha. Recomenda-se a utilização do Try / Finally / End é recomendado para tornar os scripts seguros em caso de falha de E/S.

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 dispõe das seguintes rotinas matemáticas:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

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:

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 cadeias de caracteres not suportadas pelo DelphiScript estão descritas 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, 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:

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

 

Utilização de conjuntos no DelphiScript

O Embarcadero Delphi's Set e In , bem como os operadores de conjuntos +, -, *, = e >= não são suportadas no DelphiScript. As palavras-chave equivalentes dos operadores de conjunto estão apresentadas na tabela abaixo.

O DelphiScript não possui tipos de conjuntos. Para utilizar conjuntos em scripts do DelphiScript, utilize as funções integradas; MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection, e SubSet funções que permitem a manipulação de conjuntos num script DelphiScript. Estas são descritas com mais pormenor abaixo.

Operadores de conjuntos

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

Função MkSet

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

Font.Style = MkSet(fsBold,fsItalic);

O MkSet(fsBold,fsItalic) aqui denota apenas dois elementos do conjunto; fsBold e fsItalic.

Função MkSetRange

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

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

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

Função InSet

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

Função SetIntersection

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

Função SubSet

A SubSet função é utilizada como substituto do operador = . A = B é igual a SubSet(A, B).

Utilização de manipuladores de exceções

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

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.

Example:

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 On palavra-chave não é suportada no DelphiScript, a Raise instrução é utilizada dentro do Except bloco.

Example:

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

Raise

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

Example:

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

Note que, uma vez que a On palavra-chave não é suportada, os Exception objetos (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 Recursos

Os recursos disponíveis para você dependem de qual solução Altium você possui – Altium Develop, Altium Agile Teams, Altium Agile Enterprise ou Altium Designer (com assinatura ativa).

Se você não vir um recurso documentado no software que está usando no momento, entre em contato com a equipe 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