Instruções e Operadores

Instruções DelphiScript

Uma instrução em DelphiScript é considerada «simples» quando não contém quaisquer outras instruções. Exemplos de instruções simples são as instruções de atribuição e as chamadas de procedimento.

Simple statements:

X := Y + 10; // assignment

ShowMessage('Hello World!'); // procedure call

Uma instrução composta consiste em várias instruções.

Compound statements:

Begin
  If A > B Then ShowMessage('A is bigger');
  Else ShowMessage('B is bigger');
  A := 0;
  B := 0;
End;

Em DelphiScript, quando são atribuídos valores a variáveis, é utilizado o operador dois-pontos-igual: :=

Ao testar a igualdade, é utilizado o operador de igualdade: =

Instruções condicionais

O DelphiScript tem instruções de controlo que afetam o fluxo de execução dentro de um script. A instrução de controlo mais comum é a instrução condicional If..Then.

Instrução If Then

A instrução If..Then é usada para controlo condicional. A sintaxe é:

If Condition Then
  Begin
  // code here
  End
Else
  Begin
  // code here
  End;

Instrução Case Of

Para evitar um conjunto complexo de instruções If, estas podem muitas vezes ser substituídas por instruções Case. Uma instrução case numa expressão é usada para selecionar um valor, uma lista de valores possíveis ou um intervalo de valores.

Quaisquer tipos podem ser usados numa instrução Case, porque o DelphiScript é uma linguagem sem tipos. As instruções Case podem ter uma instrução Else que é executada se nenhum dos rótulos corresponder ao valor do seletor (dentro da condição Case Of).

Example 1:

Case Char of
  '+' : Text := 'Plus sign';
  '-' : Text := 'Minus sign';
  '*', '/': Text := 'Multiplication or division';
  '0'..'9': Text := 'Number';
  'a'..'z': Text := 'Lowercase character';
  'A'..'Z': Text := 'Uppercase character';
else
  Text := 'Unknown character';
End;

Example 2:

Case UserName of
  'Jack', 'Joe' : IsAdministrator := true;
  'Fred' : IsAdministrator := false;
else
  Raise('Unknown User');
End;

Instrução With

A instrução With é uma forma abreviada do DelphiScript. Ao referir-se a uma variável do tipo registo (ou a um objeto), pode ser usada uma instrução 'with' em vez de repetir o respetivo nome de cada vez.

Normal version:

Form.Canvas.Pen.Width := 2;
Form.Canvas.Pen.Color := clSilver;

Version using With:

With Form.Canvas.Pen do
Begin
  Width := 2;
  Color := clSilver;
End;

Ciclo For To Do

A instrução For..To..Do fornece um método para percorrer repetidamente um bloco de código (uma ou mais linhas de código). A sintaxe básica é:

For counter := start To end Do
Begin
  // code here
End;

ForOs ciclos são frequentemente usados para inicializar um array. A direção do contador num ciclo For..To..Do pode ser controlada usando em alternativa a palavra-chave DownTo para decrementar o ciclo. O DelphiScript fornece a instrução Break/Exit para sair prematuramente de um ciclo For..To..Do.

Ciclo Repeat Until

A instrução Repeat é executada repetidamente até que a expressão booleana seja verdadeira. A instrução Repeat é sempre executada pelo menos uma vez.

Example:

Repeat
  Write('Enter a value (0..9): ');
  ShowMessage(IntToStr(I));
Until (I >= 0) and (I <= 9);

Ciclo While Do

Uma instrução While é semelhante a uma instrução Repeat, exceto que a condição de controlo é avaliada antes da primeira execução da sequência de instruções. Assim, se a condição for falsa, a sequência de instruções nunca é executada.

Example:

Randomize;
I := 0;
While I < 1000 do
Begin
  I := I + Random (100);
  Add ('Random Number: ' + IntToStr (I));
End;

Instrução Continue

A instrução Continue salta o corpo de um ciclo, de forma semelhante à instrução Goto. A instrução continue faz com que o script em execução passe para a iteração seguinte no ciclo atual For, While ou Repeat.

Example:

var
  F: File;
  i: Integer;
Begin
  For i := 0 to (FileListBox1.Items.Count - 1) do
  Begin
    Try
    If FileListBox1.Selected[i] Then
    Begin
      If not FileExists(FileListBox1.Items.Strings[i]) then
      Begin
        MessageDlg('File: ' + FileListBox1.Items.Strings[i] + 'not found', mtError, [mbOk], 0);
        Continue;
      End;
      AssignFile(F, FileListBox1.Items.Strings[i]);
      Reset(F, 1);
      ListBox1.Items.Add(IntToStr(FileSize(F)));
      CloseFile(F);
    End;
    Finally
      { do something here }
    End;
  End;
End;

Instrução Goto Label

A instrução Goto tem a forma Goto label que transfere a execução do script para a instrução marcada pelo rótulo especificado. Para marcar uma instrução, o rótulo tem primeiro de ser declarado e depois a instrução de destino deve ser precedida pelo rótulo e por dois-pontos: label: statement

Um Label pode ser qualquer identificador válido. A declaração Label e a instrução Goto devem pertencer ao mesmo bloco de código dentro de um script. Por isso, não é possível saltar para dentro de um procedimento ou função, nem sair deles através de salto.

Example:

Label StartHere;
  // code
StartHere: Beep;
Goto StartHere;

Instrução Exit

A instrução Exit regressa imediatamente de uma função ou procedimento. Se chamar Exit a partir de dentro de um bloco Try..Finally, a parte Finally é executada antes de a subrotina regressar. Se o procedimento Exit for chamado a partir do corpo principal do script, a execução do script termina.

Example:

Begin
  Server := SchServer;
  If Server = Nil Then
  Begin
    ShowError('No SchServer started');
    Exit;
End;

Instrução Break

A instrução Break faz com que o script em execução saia do ciclo atual For, While ou Repeat. A execução do script continua a partir da linha executável seguinte após o ciclo atual.

Example:

Var
  S: string;
Begin
  While True do
  Begin
    ReadLn(S);
    Try
      if S = '' then Break;
      WriteLn(S);
    Finally
      { do something for all cases }
    End;
  End;
End;

Operadores de expressões DelphiScript

Em geral, uma expressão é uma combinação válida de constantes, variáveis, valores literais, operadores e resultados de funções. As expressões são usadas para determinar o valor a atribuir a uma variável, para calcular o parâmetro de uma função ou para testar uma condição. As expressões podem incluir chamadas de função.

O DelphiScript tem vários operadores lógicos, aritméticos, booleanos e relacionais. Estes operadores são agrupados pela ordem de precedência (ver abaixo), que é diferente das ordens de precedência usadas em Basic, C, etc. Por exemplo, os operadores AND e OR têm precedência em relação aos operadores relacionais.

Se escrever a<b and c<d, o DelphiScript executará primeiro a operação AND, resultando num erro. Para evitar este problema e definir a prioridade, cada expressão < tem de ser colocada entre parênteses: (a<b) and (c<d);

Os operadores DelphiScript suportados listados abaixo são apresentados pela sua ordem de precedência.

Operadores agrupados por precedência

Note que os operadores unários têm a precedência mais elevada.

Not

NOT booleano ou bit a bit.

Multiplicative and Bitwise Operators

*

Multiplicação aritmética.

/

Divisão em vírgula flutuante.

div

Divisão inteira.

mod

módulo (resto da divisão inteira).

and

AND booleano ou bit a bit.

shl

Deslocamento bit a bit para a esquerda.

shr

Deslocamento bit a bit para a direita.

Additive Operators

+

Adição aritmética, concatenação de strings.

-

Subtração aritmética.

or

OR booleano ou bit a bit

xor

OU EXCLUSIVO booleano ou bit a bit.

Relational and Comparison Operators (lowest precedence)

=

Testa se é igual ou não.

<>

Testa se é diferente ou não.

<

Testa se é menor que ou não.

>

Testa se é maior que ou não.

<=

Testa se é menor ou igual a ou não.

>=

Testa se é maior ou igual a ou não.

Note também que os operadores ^ e @ não são suportados pelo DelphiScript.

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