Palavras-chave
Esta referência abrange as palavras-chave de DelphiScript utilizadas pelo Sistema de Scripting no Altium Designer. O sistema de scripting suporta a linguagem DelphiScript, que é muito semelhante à linguagem de programação Embarcadero Delphi™. A principal diferença é que DelphiScript é uma linguagem de scripting sem tipos.
Nesta secção, são apresentadas palavras-chave comuns de DelphiScript com informações detalhadas e exemplos. Para mais informações sobre palavras-chave, como ficheiros Delphi, rotinas matemáticas e de tratamento de cadeias de caracteres, consulte Functions e a Embarcadero Delphi Reference.
And
Declaration
O operador And executa um and lógico/bit a bit.
Description
O operador And executa uma operação lógica e, se os operadores forem do tipo booleano, ou um And bit a bit, se os operadores forem inteiros.
Example of a boolean And evaluation:
Var
I, J : Integer
Begin
I := $F0;
J := $8F;
ShowMessage(IntToStr(I and J));
End;
Example of a logical And evaluation:
Var
S : String;
Begin
S := '';
If (Length(S) > 0) and (S[1\] = 'X') Then Delete(S,1,1);
End;
See also
Or keyword
Xor keyword
Array
Declaration
Array [index range];
Description
A linguagem DelphiScript é uma linguagem sem tipos, pelo que o tamanho ou intervalo de um array tem de ser especificado. O tipo de elementos que o array pode conter pode ainda ser definido, mas não é necessário. A declaração Open array não é suportada.
Example:
var x : array [1..2];
Begin
Declaration
Begin
statement
End;
Description
A palavra-chave begin inicia um bloco no script. Um bloco é o corpo principal de um script e pode incluir qualquer número de instruções, podendo ser usado em qualquer local onde seja necessária uma única instrução, como no corpo de uma instrução condicional ou de ciclo.
Example:
Var
Test : Integer;
Begin
Test := Test + 4;
ShowMessage(IntToStr(Test));
End;
See also
End keyword
Break
Declaration
Break;
Description
Uma instrução Break sai de um ciclo, de forma semelhante a uma instrução Goto.
Example:
While Condition Do
Begin
DoSomething;
Begin
If AnotherCondition Then
Break;
End;
End;
See also
While keyword
Continue keyword
Do keyword
Repeat keyword
Case
Declaration
Case expression Of
Value range : Expression;
Else Expression;
End;
Description
As instruções Case selecionam um ramo entre muitos ramos possíveis, dependendo do valor da expressão.
Em muitas situações, um conjunto complexo de instruções If pode ser simplificado substituindo-o 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 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;
See also
Of keyword
Continue
Declaration
Continue
Description
A instrução Continue salta o corpo de um ciclo, de forma semelhante à instrução Goto;
Example:
Var
I := 0; s:= 1;
Begin
While True Do
Begin
S := S \* 2;
I := I \\+ 1;
If I <> 4 then continue;
Break;
End;
See also
Break keyword
While keyword
Continue keyword
Do keyword
Repeat keyword
Const
Declaration
Const
Name = Expression;
Description
A palavra-chave Const especifica qualquer expressão com valor constante como o valor de uma constante. Se tentar modificar a expressão que é do tipo const no script, o sistema de scripting irá gerar um erro de identificador não declarado.
Example:
Const
b = 30;
Begin
ShowMessage(IntTtStr(b));
End;
Uma tentativa de alterar o valor do parâmetro b const irá gerar um erro, por exemplo:
Const
b = 30;
Begin
b := 40;
ShowMessage(IntToStr(b));
End;
Div
Declaration
dividend div divisor
Description
O operador Div executa uma divisão inteira que descarta resultados fracionários sem arredondamento. Se o divisor for zero, DelphiScript comunica um erro.
See also
Mod Operator
Div Operator
Do
Declaration
-
For variable := expression1 to expression2 dostatement -
While expression dostatement -
With expression dostatement.
Description
A palavra-chave Do faz parte das instruções For, While and With do DelphiScript.
Example:
For i := 0 To AnIndex - 1 Do
S := S + #13 + AString;
See also
For keyword
To keyword
While keyword
With keyword
DownTo keyword
DownTo
Declaration
For variable := expression1 DownTo expression2 Do statement.
Description
Utilize DownTo num ciclo For para fazer uma contagem decrescente.
See also
For keyword
To keyword
Do keyword
Else
Declaration
-
If condition then statement Else statement -
Try statement except exception Else statement end -
Case expression of Else end;
Description
A palavra-chave Else introduz a parte genérica de várias instruções. Tenha em atenção que a parte else de uma instrução if é seguida por uma única instrução, mas a parte else das instruções try-except e case pode ter múltiplas instruções.
See also
If keyword
Then keyword
Try keyword
Case keyword
End
Declaration
-
Begin statements End; -
Try statements Except Exception clauses... else Statements... End; -
Try statements Finally statements End; -
Case Expression of clauses Else statements... End;
Description
A palavra-chave End termina um bloco ou uma parte múltipla, como declarações, instruções Case e assim por diante.
See also
Begin keyword
Case keyword
Try keyword
Except
Declaration
Try statements Except statements End;
Description
Utilize blocos Try-Except para tratar casos excecionais, por exemplo, para capturar exceções específicas e fazer algo de útil com elas, como adicioná-las a um registo de erros ou criar uma caixa de diálogo amigável. Como a palavra-chave On não é suportada em DelphiScript, utilize a instrução Raise dentro do bloco Except e comunique apenas uma mensagem textual.
Example:
Try
X := Y/Z;
Except
Raise('A divide by zero error!');
End;
See also
End keyword
Finally keyword
Try keyword
Finally
Declaration
Try statements... Finally statements... End;
Description
A palavra-chave finally inicia a parte finally de um bloco try-finally. As instruções no bloco finally são sempre executadas, independentemente da forma como o controlo sai do bloco try — exceção, saída ou break. Recomenda-se a utilização do bloco try-finally ao lidar com a criação/destruição de objetos e E/S de ficheiros.
See also
End keyword
Raise keyword
Try keyword
For
Declaration
-
for variable := expression1 to expression2 do statement -
for variable := expression1 downto expression2 do statement
Description
Um ciclo for avalia as expressões que especificam os limites deste ciclo e, em seguida, executa repetidamente o corpo do ciclo através da variável de controlo do ciclo, que é atualizada após cada iteração.
Example:
For i := 0 to AnIndex - 1 Do
Begin
S := S + #13 + AString;
End;
ShowMessage(S);
See also
Do keyword
DownTo keyword
Repeat keyword
To keyword
While keyword
With keyword
Forward
Declaration
subroutine header; forward;
Description
A diretiva Forward permite que uma função ou procedimento seja declarado antes de ser chamado, declarando o cabeçalho (nome, parâmetros e tipo de retorno) com a diretiva forward.
Function
Declaration
Function name (parameters) : return type;
Description
Uma Function é uma subrotina que devolve um valor. Tenha em atenção que apontadores para funções não são permitidos em scripts — isto é, tipos funcionais não podem ser definidos. As variáveis declaradas dentro de uma função não são acessíveis fora deste procedimento.
Example
Function TestFunc(Min, Max : integer) : integer;
Begin
Result := Random(Max - Min +1);
End;
Goto
Declaration
goto label
Description
A instrução goto transfere o controlo para o rótulo indicado. O rótulo pode ser qualquer identificador ou uma cadeia de dígitos com até quatro dígitos.
Example
Label StartHere;
// code
StartHere: //do anything;
Goto StartHere;
See also
Label keyword
If
Declaration
-
if condition then statement; -
if condition then statement1 else statement2;
Description
A condição para a palavra-chave If tem de ser uma expressão booleana. A palavra-chave Else é opcional.
Example
If A > B Then
ShowMessage('X>Y and A > B');
Else
ShowMessage('X>Y and A <=B');
End;
See also
And keyword
Begin keyword
Or keyword
Then keyword
Else keyword
Interface
Declaration
Interface
// Globally unique identifier string.
Methods
Properties
End;
Description
A palavra-chave interface permite o acesso a um objeto existente na memória e invoca os métodos do objeto. Uma interface só pode consistir em propriedades e métodos — sem dados. Como as interfaces não podem conter dados, as suas propriedades têm de escrever para e ler a partir de métodos. Mais importante ainda, as interfaces não têm implementação, pois apenas definem um contrato para um objeto existente na memória.
Uma interface pode ser entendida como um ponto de contacto com um objeto existente na memória do computador e oferece a capacidade de ler/escrever dados através das propriedades da interface. A interface solicita dados ao seu objeto associado.
DelphiScript é uma linguagem sem tipos; por conseguinte, não é possível definir novos tipos, como novos registos, arrays ou classes, nem interfaces associadas.
Label
Declaration
label digits, identifier, ...;
Description
A palavra-chave label declara um ou mais rótulos. Um rótulo pode ser uma cadeia de dígitos com até quatro dígitos ou um identificador. Um rótulo pode ser usado no mesmo bloco para identificar uma instrução como destino de uma instrução goto.
Example:
Label StartHere;
// code
StartHere: //do anything;
Goto StartHere;
See also
Goto keyword
Mod
Declaration
Integer expression mod integer expression
Description
O operador mod executa uma operação de módulo inteiro ou resto. O resultado de A mod B é A - (A div B) * B.
See also
Div function
Nil
Declaration
const nil = pointer(0);
Description
A palavra-chave nil é um valor especial de apontador que é garantidamente distinto e não aponta para nada.
Not
Declaration
-
not boolean expression -
not integer expression
Description
O operador not executa uma negação. Se o operando for de tipo booleano, o negativo é uma negação lógica. Not False = True e not true = false. Se o operando for um inteiro, o operador not executa uma negação bit a bit de cada bit no valor inteiro — isto é, uma operação de complemento.
Of
Declaration
case expression of
selector: expression1
...
end
Description
A palavra-chave Of é usada para a instrução case.
See also
Case statement
Or
Declaration
-
boolean expression or boolean expression -
integer expression or integer expression
Description
O operador or executa um Or lógico se os operandos forem do tipo booleano, ou um Or bit a bit se os operadores forem inteiros. Um Or lógico só é falso se ambos os operandos forem falsos; caso contrário, é verdadeiro quando pelo menos um dos operandos é verdadeiro.
See also
And keyword
Not keyword
Shl keyword
Shr keyword
Xor keyword
Procedure
Declaration
-
Procedure name; -
Procedure Name (Parameter, ...);
Description
A palavra-chave procedure declara uma subrotina que não tem tipo de retorno. As variáveis declaradas dentro de um procedimento não são acessíveis fora deste procedimento. Note que esta palavra-chave pode ser usada, mas é ignorada pelo sistema de scripting.
Example:
Procedure TestRand(Var Rand: Integer; Max : Integer);
Begin
Rand := Random(Max);
End;
See also
Function keyword
Program
Declaration
Program Name;
declarations...
Block
Description
A palavra-chave program inicia um script. A extensão de ficheiro para um script é *.pas. Note que esta palavra-chave pode ser usada, mas é ignorada pelo sistema de scripting.
See also
Function keyword
Raise
Declaration
Raise statement;
Description
A palavra-chave raise está relacionada com a palavra-chave Try. A palavra-chave Raise pode ser usada sem parâmetros para voltar a lançar a última exceção. Também pode ser usada com um parâmetro de cadeia de caracteres para lançar uma exceção com uma mensagem específica.
Example:
Raise(Format('Invalid Value Entered : %d', \[Height]));
Note que a palavra-chave On não é suportada em DelphiScript, pelo que os objetos Exception não podem ser utilizados em scripts.
Repeat
Declaration
repeat
statements;
until boolean expression
Description
As instruções dentro de um bloco Repeat Until são executadas repetidamente até que a expressão booleana seja verdadeira.
Example:
Repeat
Write('Enter a value (0..9): ');
ShowMessage(IntToStr(I));
Until (I >= 0) and (I <= 9);
See also
Until keyword
Result
Declaration
Var result : Function return type;
Description
Todas as funções num script têm de usar a palavra-chave Result para devolver um valor resultante. O tipo da variável é o tipo de retorno da função.
See also
Function keyword
Shl
Declaration
value shl bits
Description
O operador shl efetua um deslocamento para a esquerda de um valor inteiro em Bits posições de bit. Os bits libertados são preenchidos à direita com bits a zero.
See also
And keyword
Not keyword
Or keyword
Shr keyword
Xor keyword
Shr
Declaration
value shr bits
Description
O operador shr efetua um deslocamento para a direita de um valor inteiro em Bits posições de bit. Os bits libertados são preenchidos à esquerda com bits a zero.
See also
And keyword
Not keyword
Or keyword
Shl keyword
Xor keyword
String
Declaration
-
type string; -
type Name = string[Constant]
Description
A palavra-chave string representa o tipo string.
Then
Declaration
If expression then statement
Description
A palavra-chave Then faz parte de uma instrução If.
See also
If keyword
To
Declaration
For variable := expression1 to expression2 do statement
Description
A palavra-chave to faz parte de um ciclo for que conta de forma crescente.
Example
For i := 0 to AnIndex - 1 do
S := S + #13 + AString;
See also
Downto keyword
For keyword
Try
Declaration
-
Try statements finally statements end; -
Try statements except statements end;
Description
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
As instruções no bloco finally são sempre executadas, independentemente da forma como o controlo sai do bloco try: exceção, Exit ou Break. Utilize o bloco try-finally para libertar objetos temporários e outros recursos, e para realizar atividades de limpeza. Normalmente, não precisa de mais do que uma instrução try-finally numa sub-rotina.
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 adicioná-las a um registo de erros ou criar uma caixa de diálogo amigável. Como a palavra-chave On não é suportada em DelphiScript, utilize a instrução Raise dentro do bloco Except.
Example:
Try
X := Y/Z;
Except
Raise('A divide by zero error!');
End;
See also
Raise keyword
Type
Declaration
Type Name = type declaration ...
Description
A palavra-chave Type declara o tipo de uma variável. Como DelphiScript é uma linguagem sem tipos, não é necessário declarar variáveis de um tipo específico, mas isso pode ser feito por uma questão de legibilidade nos scripts. Todas as variáveis num script são sempre do tipo Variant. A principal limitação na escrita de scripts é que não é possível declarar records ou classes.
O typecasting é ignorado nos scripts, pelo que os tipos na declaração de variáveis são ignorados e podem ser omitidos. Assim, estas declarações estão corretas:
Example:
var a : integer;
var b : integer;
var c, d;
Os tipos dos parâmetros na declaração de procedure/function são ignorados e podem ser omitidos. Por exemplo, este código está correto:
Function sum(a, b) : integer;
Begin
Result := a + b;
End;
De um modo geral, as variants podem ser utilizadas para armazenar qualquer tipo de dados e efetuar numerosas operações e conversões de tipo. Uma variant é verificada quanto ao tipo e calculada em tempo de execução. O compilador não avisará sobre possíveis erros no código, que só podem ser detetados com testes extensivos. No geral, as partes do código que usam variants podem ser consideradas código interpretado, porque muitas operações não podem ser resolvidas até ao tempo de execução. Isto pode afetar a velocidade do código.
Example:
Var
V
Begin
// you can assign to it values of several different types:
V := 10;
V := 'Hello, World';
V := 45.55;
End;
See also
Var keyword
Unit
Declaration
-
Unit Name;
interface
declarations
implementation
declarations
statements
Initialization
statements
finalization
statements
end.
-
Unit Name;
interface
declarations
implementation
declarations
statements
begin
statements
end.
A palavra-chave unit introduz uma unit, que é o módulo básico de um script. Note que esta palavra-chave pode ser utilizada, mas é ignorada pelo sistema de scripting.
See also
Function keyword
Program keyword
Until
Declaration
Repeat
Statements;
Until boolean expression
Description
A palavra-chave until assinala o fim do bloco Repeat-Until. As instruções dentro de um bloco Repeat-Until são executadas repetidamente até que a expressão booleana seja verdadeira.
Example:
Repeat
Write('Enter a value (0..9): ');
ShowMessage(IntToStr(I));
Until (I >= 0) and (I <= 9);
See also
Repeat keyword
Uses
Declaration
Uses Unit Name, ...;
Description
A palavra-chave uses lista os nomes das units que são importadas para a unit envolvente. A declaração uses é opcional porque o sistema de scripting suporta units que são importadas no Altium Designer. Pode incluir a declaração uses por uma questão de legibilidade.
Todas as units armazenadas no mesmo projeto podem aceder a variáveis globais de qualquer uma dessas units. Tenha isso em conta ao declarar variáveis em units dentro do mesmo projeto.
As APIs Client, PCB, Schematic e WorkSpace Manager do Altium Designer, bem como SysUtils, Classes e outras units do Delphi, são importadas e disponibilizadas para utilização em scripts — por isso, não existe necessidade específica de declarar estas units em scripts.
See also
Para informações mais detalhadas sobre a API do Altium Designer, consulte a documentação Using the Altium Designer API.
Var
Declaration
Name : Type
Name : Type = Expression;
DelphiScript Variables
Todas as variáveis num script são sempre do tipo Variant. O typecasting é ignorado. Os tipos na declaração de variáveis são ignorados e podem ser omitidos, pelo que estas declarações estão corretas:
Var a : integer;
Var b : integer;
Var c, d;
Os tipos dos parâmetros na declaração de procedure/function são ignorados e podem ser omitidos. Por exemplo, este código está correto:
Function sum(a, b) : integer;
Begin
Result := a + b;
End;
De um modo geral, as variants podem ser utilizadas para armazenar qualquer tipo de dados e efetuar numerosas operações e conversões de tipo. Uma variant é verificada quanto ao tipo e calculada em tempo de execução. O compilador não avisará sobre possíveis erros no código, que só podem ser detetados com testes extensivos. No geral, as partes do código que usam variants podem ser consideradas código interpretado, porque muitas operações não podem ser resolvidas até ao tempo de execução. Isto pode afetar a velocidade do código.
Declarar uma variável variant:
Var
V;
Begin
// you can assign to it values of several different types:
V := 10;
V := 'Hello, World';
V := 45.55;
End;
Array elements
o tipo dos elementos do array é ignorado e pode ser omitido, pelo que estas declarações são equivalentes:
Var x : array [1..2] of double;
Var x : array [1..2];
Illegal array example:
Type
TVertices = Array [1..50] Of TLocation;
Var
NewVertices : TVertices;
Legal array example:
Var
NewVertices : Array [1..50] of TLocation;
While
Declaration
while expression do statement
Description
A instrução while executa repetidamente a instrução enquanto a expressão for verdadeira.
See also
Break keyword
Continue keyword
Do keyword
DownTo keyword
For keyword
Repeat keyword
To keyword
With keyword
With
Declaration
with expression do statement
Description
A instrução With adiciona uma referência a um record, objeto, classe ou interface ao âmbito para resolução de nomes de símbolos.
Normal version example:
Form.Canvas.Pen.Width := 2;
Form.Canvas.Pen.Color := clSilver;
With version example:
With Form.Canvas.Pen do
Begin
Width := 2;
Color := clSilver;
End;
See also
Do keyword
Xor
Declaration
- expressão booleana Xor expressão booleana
-
integer expression Xor integer expression
Description
O operador xor efetua um OU exclusivo sobre os seus operandos. Se os operandos forem do tipo booleano, devolve um resultado booleano — true se os operandos forem diferentes e false se forem iguais.
Um xor inteiro opera sobre cada bit dos seus operandos, definindo o bit do resultado como 1 se os bits correspondentes em ambos os operandos forem diferentes, e como 0 se ambos os operandos tiverem bits idênticos. Se um operando for menor do que o outro, o operando menor é estendido com 0 nos bits mais à esquerda.
See also
And keyword
Not keyword
Or keyword
Shl keyword
Shr keyword