Ключевые слова
Этот справочник охватывает ключевые слова DelphiScript, используемые в системе скриптинга Altium Designer. Система скриптинга поддерживает язык DelphiScript, который очень похож на язык программирования Embarcadero Delphi™. Ключевое отличие в том, что DelphiScript — это нетипизированный скриптовый язык.
В этом разделе приведены распространённые ключевые слова DelphiScript с подробной информацией и примерами. Дополнительные сведения о ключевых словах, например о процедурах работы с файлами Delphi, математикой и строками, см. в разделе Функции и в справочнике Embarcadero Delphi.
And
Declaration
Оператор And выполняет логическое/побитовое И (and).
Description
Оператор And выполняет логическое И, если операнды имеют булев тип, или побитовое And, если операнды — целые числа.
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
Язык DelphiScript является нетипизированным, поэтому необходимо задавать размер или диапазон массива. Тип элементов, которые может содержать массив, по-прежнему можно определить, но это не обязательно. Объявление Open array не поддерживается.
Example:
var x : array [1..2];
Begin
Declaration
Begin
statement
End;
Description
Ключевое слово begin начинает блок в скрипте. Блок — это основное тело скрипта; он может включать любое количество операторов и может использоваться везде, где требуется один оператор, например в теле условного оператора или оператора цикла.
Example:
Var
Test : Integer;
Begin
Test := Test + 4;
ShowMessage(IntToStr(Test));
End;
See also
End keyword
Break
Declaration
Break;
Description
Оператор Break выполняет выход из цикла, аналогично оператору 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
Операторы Case выбирают одну ветвь из множества возможных в зависимости от значения выражения.
Во многих ситуациях сложный набор операторов If можно упростить, заменив их операторами Case. Оператор case в выражении используется для выбора значения, списка возможных значений или диапазона значений. В операторе case можно использовать любые типы, поскольку DelphiScript — нетипизированный язык. Операторы Case могут содержать оператор else, который выполняется, если ни одна метка не соответствует значению селектора (в пределах условия 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
Оператор Continue пропускает тело цикла, аналогично оператору 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
Ключевое слово Const задаёт в качестве значения константы любое выражение с постоянным значением. Если попытаться изменить в скрипте выражение типа const, система скриптинга выдаст ошибку «undeclared identifier» (необъявленный идентификатор).
Example:
Const
b = 30;
Begin
ShowMessage(IntTtStr(b));
End;
Попытка изменить значение параметра b const приведёт к ошибке, например:
Const
b = 30;
Begin
b := 40;
ShowMessage(IntToStr(b));
End;
Div
Declaration
dividend div divisor
Description
Оператор Div выполняет целочисленное деление, отбрасывая дробную часть без округления. Если делитель равен нулю, DelphiScript сообщает об ошибке.
See also
Mod Operator
Div Operator
Do
Declaration
-
For variable := expression1 to expression2 dostatement Оператор -
While expression doОператор -
With expression do.
Description
Ключевое слово Do является частью операторов For, While and With в 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
Используйте DownTo в цикле For для счёта в обратном направлении.
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
Ключевое слово Else вводит «универсальную» (catch-all) часть нескольких операторов. Обратите внимание: часть else оператора if сопровождается одним оператором, тогда как часть else операторов try-except и case может содержать несколько операторов.
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
Ключевое слово End завершает блок или составную часть, например раздел объявлений, операторы Case и т. п.
See also
Begin keyword
Case keyword
Try keyword
Except
Declaration
Try statements Except statements End;
Description
Используйте блоки Try-Except для обработки исключительных ситуаций — например, чтобы перехватывать конкретные исключения и выполнять с ними полезные действия, такие как добавление в журнал ошибок или создание понятного диалогового окна. Поскольку ключевое слово On в DelphiScript не поддерживается, используйте оператор Raise внутри блока Except и сообщайте только текстовое сообщение.
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
Ключевое слово finally начинает часть finally блока try-finally. Операторы в блоке finally выполняются всегда, независимо от того, как управление покидает блок try: из-за исключения, exit или break. Рекомендуется использовать блок try-finally при создании/уничтожении объектов и при файловом ввода-выводе (File IO).
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
Цикл for вычисляет выражения, задающие пределы цикла, затем многократно выполняет тело цикла, используя переменную управления циклом, которая обновляется после каждой итерации.
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
Директива Forward позволяет объявить функцию или процедуру до её вызова, объявив заголовок (имя, параметры и возвращаемый тип) с директивой forward.
Function
Declaration
Function name (parameters) : return type;
Description
Function — это подпрограмма, возвращающая значение. Обратите внимание: указатели на функции в скриптах не допускаются — то есть нельзя определять функциональные типы. Переменные, объявленные внутри функции, недоступны вне этой процедуры.
Example
Function TestFunc(Min, Max : integer) : integer;
Begin
Result := Random(Max - Min +1);
End;
Goto
Declaration
goto label
Description
Оператор goto передаёт управление указанной метке. Меткой может быть любой идентификатор или строка цифр длиной до четырёх цифр.
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
Условие для ключевого слова If должно быть булевым выражением. Ключевое слово Else является необязательным.
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
Ключевое слово interface обеспечивает доступ к существующему объекту в памяти и вызывает методы объекта. Интерфейс может состоять только из свойств и методов — без данных. Поскольку интерфейсы не могут содержать данные, их свойства должны записывать и читать через методы. Самое важное: у интерфейсов нет реализации, так как они лишь определяют контракт для существующего объекта в памяти.
Интерфейс можно рассматривать как точку контакта с существующим объектом в памяти компьютера; он предоставляет возможность чтения/записи данных через свойства интерфейса. Интерфейс запрашивает данные у связанного с ним объекта.
DelphiScript — нетипизированный язык, поэтому вы не можете определять новые типы, такие как новые записи (records), массивы или классы, а также связанные с ними интерфейсы.
Label
Declaration
label digits, identifier, ...;
Description
Ключевое слово label объявляет одну или несколько меток. Метка может быть строкой цифр длиной до четырёх цифр или идентификатором. Метку можно использовать в том же блоке, чтобы обозначить оператор как цель оператора goto.
Example:
Label StartHere;
// code
StartHere: //do anything;
Goto StartHere;
See also
Goto keyword
Mod
Declaration
Integer expression mod integer expression
Description
Оператор mod выполняет операцию целочисленного модуля (остатка от деления). Результат A mod B равен A - (A div B) * B.
See also
Div function
Nil
Declaration
const nil = pointer(0);
Description
Ключевое слово nil — это специальное значение указателя, которое гарантированно отличается от других и ни на что не указывает.
Not
Declaration
-
not boolean expression -
not integer expression
Description
Оператор not выполняет отрицание. Если операнд имеет булев тип, отрицание является логическим отрицанием. Not False = True и not true = false. Если операнд — целое число, оператор not выполняет побитовое отрицание каждого бита целочисленного значения — то есть операцию дополнения.
Of
Declaration
case expression of
selector: expression1
...
end
Description
Ключевое слово Of используется в операторе case.
See also
Case statement
Or
Declaration
-
boolean expression or boolean expression -
integer expression or integer expression
Description
Оператор or выполняет логическое Or, если операнды имеют булев тип, или побитовое Or, если операнды — целые числа. Логическое Or ложно только если оба операнда ложны; в противном случае оно истинно, когда хотя бы один операнд истинен.
See also
And keyword
Not keyword
Shl keyword
Shr keyword
Xor keyword
Procedure
Declaration
-
Procedure name; -
Procedure Name (Parameter, ...);
Description
Ключевое слово procedure объявляет подпрограмму, не имеющую возвращаемого типа. Переменные, объявленные внутри процедуры, недоступны вне этой процедуры. Обратите внимание, что это ключевое слово можно использовать, но система скриптинга его игнорирует.
Example:
Procedure TestRand(Var Rand: Integer; Max : Integer);
Begin
Rand := Random(Max);
End;
See also
Function keyword
Program
Declaration
Program Name;
declarations...
Block
Description
Ключевое слово program начинает скрипт. Расширение файла скрипта — *.pas. Обратите внимание, что это ключевое слово можно использовать, но система скриптинга его игнорирует.
See also
Function keyword
Raise
Declaration
Raise statement;
Description
Ключевое слово raise связано с ключевым словом Try. Ключевое слово Raise можно использовать без параметров, чтобы повторно выбросить последнее исключение. Также его можно использовать со строковым параметром, чтобы сгенерировать исключение с заданным сообщением.
Example:
Raise(Format('Invalid Value Entered : %d', \[Height]));
Обратите внимание, что ключевое слово On не поддерживается в DelphiScript, поэтому объекты Exception нельзя использовать в скриптах.
Repeat
Declaration
repeat
statements;
until boolean expression
Description
Операторы внутри блока Repeat Until выполняются повторно до тех пор, пока логическое выражение не станет истинным.
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
Каждая функция в скрипте должна использовать ключевое слово Result, чтобы вернуть результирующее значение. Тип переменной является возвращаемым типом функции.
See also
Function keyword
Shl
Declaration
value shl bits
Description
Оператор shl выполняет сдвиг влево целочисленного значения на Bits битовых позиций. Освободившиеся биты справа заполняются нулями.
See also
And keyword
Not keyword
Or keyword
Shr keyword
Xor keyword
Shr
Declaration
value shr bits
Description
Оператор shr выполняет сдвиг вправо целочисленного значения на Bits битовых позиций. Освободившиеся биты слева заполняются нулями.
See also
And keyword
Not keyword
Or keyword
Shl keyword
Xor keyword
String
Declaration
-
type string; -
type Name = string[Constant]
Description
Ключевое слово string обозначает строковый тип.
Then
Declaration
If expression then statement
Description
Ключевое слово Then является частью оператора If.
See also
If keyword
To
Declaration
For variable := expression1 to expression2 do statement
Description
Ключевое слово to является частью цикла for, который выполняет счёт по возрастанию.
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
Ключевое слово try вводит оператор try-except или оператор try-finally. Эти два оператора связаны, но служат разным целям.
Try Finally
Операторы в блоке finally выполняются всегда, независимо от того, как управление покидает блок try: из‑за исключения, через Exit или Break. Используйте блок try-finally для освобождения временных объектов и других ресурсов, а также для выполнения действий по очистке. Обычно в подпрограмме не требуется более одного оператора try-finally.
Example:
Reset(F);
Try
... // process file F
Finally
CloseFile(F);
End;
Try Except
Используйте try-except для обработки исключительных случаев, например чтобы перехватывать конкретные исключения и делать с ними что‑то полезное — например, добавлять их в журнал ошибок или создавать понятное диалоговое окно. Поскольку ключевое слово On не поддерживается в DelphiScript, используйте оператор Raise внутри блока 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
Ключевое слово Type объявляет тип переменной. Поскольку DelphiScript — язык без строгой типизации, объявлять переменные конкретного типа не обязательно, но это можно делать ради читаемости скриптов. Все переменные в скрипте всегда имеют тип Variant. Основное ограничение при написании скриптов — нельзя объявлять записи (records) или классы.
Приведение типов в скриптах игнорируется, поэтому типы в объявлении переменных игнорируются и их можно опустить. Следовательно, эти объявления корректны:
Example:
var a : integer;
var b : integer;
var c, d;
Типы параметров в объявлении процедуры/функции игнорируются и их можно опустить. Например, этот код корректен:
Function sum(a, b) : integer;
Begin
Result := a + b;
End;
В целом, варианты (Variant) можно использовать для хранения данных любого типа и выполнения множества операций и преобразований типов. Variant проверяется по типу и вычисляется во время выполнения. Компилятор не предупредит о возможных ошибках в коде — их можно выявить только при тщательном тестировании. В общем, участки кода, использующие Variant, можно считать интерпретируемыми, поскольку многие операции нельзя разрешить до времени выполнения. Это может влиять на скорость работы кода.
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.
Ключевое слово unit вводит модуль (unit), который является базовым модулем для скрипта. Обратите внимание: это ключевое слово можно использовать, но система скриптинга его игнорирует.
See also
Function keyword
Program keyword
Until
Declaration
Repeat
Statements;
Until boolean expression
Description
Ключевое слово until обозначает конец блока Repeat-Until. Операторы внутри блока Repeat-Until выполняются повторно до тех пор, пока логическое выражение не станет истинным.
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
Ключевое слово uses перечисляет имена модулей, импортируемых в окружающий модуль. Объявление uses необязательно, поскольку система скриптинга уже поддерживает модули, импортируемые в Altium Designer. Вы можете включить объявление uses ради читаемости.
Все модули, хранящиеся в рамках одного проекта, могут получать доступ к глобальным переменным из любого из этих модулей. Учитывайте это при объявлении переменных в модулях одного и того же проекта.
API Altium Designer (Client, PCB, Schematic и WorkSpace Manager), а также модули Delphi SysUtils, Classes и другие импортированы и доступны для использования в скриптах — поэтому обычно нет необходимости явно объявлять эти модули в скриптах.
See also
Более подробную информацию об API Altium Designer см. в документации Using the Altium Designer API.
Var
Declaration
Name : Type
Name : Type = Expression;
DelphiScript Variables
Все переменные в скрипте всегда имеют тип Variant. Приведение типов игнорируется. Типы в объявлении переменных игнорируются и их можно опустить, поэтому эти объявления корректны:
Var a : integer;
Var b : integer;
Var c, d;
Типы параметров в объявлении процедуры/функции игнорируются и их можно опустить. Например, этот код корректен:
Function sum(a, b) : integer;
Begin
Result := a + b;
End;
В целом, варианты (Variant) можно использовать для хранения данных любого типа и выполнения множества операций и преобразований типов. Variant проверяется по типу и вычисляется во время выполнения. Компилятор не предупредит о возможных ошибках в коде — их можно выявить только при тщательном тестировании. В общем, участки кода, использующие Variant, можно считать интерпретируемыми, поскольку многие операции нельзя разрешить до времени выполнения. Это может влиять на скорость работы кода.
Объявление переменной типа 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
Тип элементов массива игнорируется и его можно опустить, поэтому эти объявления эквивалентны:
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
Оператор while выполняет оператор(ы) повторно, пока выражение истинно.
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
Оператор With добавляет ссылку на запись, объект, класс или интерфейс в область видимости для разрешения имён символов.
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
- логическое выражение Xor логическое выражение
-
integer expression Xor integer expression
Description
Оператор xor выполняет исключающее ИЛИ (Exclusive Or) над своими операндами. Если операнды имеют логический тип, он возвращает логический результат — true, если операнды различаются, и false, если они одинаковы.
Целочисленный xor выполняет операцию над каждым битом своих операндов, устанавливая бит результата в 1, если соответствующие биты в обоих операндах различаются, и в 0, если оба операнда имеют одинаковые биты. Если один операнд меньше другого, меньший операнд расширяется с помощью 0 в самых левых битах.
See also
And keyword
Not keyword
Or keyword
Shl keyword
Shr keyword