Ключевые слова

 

Этот справочник охватывает ключевые слова DelphiScript, используемые в системе скриптинга Altium Designer. Система скриптинга поддерживает язык DelphiScript, который очень похож на язык программирования Embarcadero Delphi™. Ключевое отличие в том, что DelphiScript — это нетипизированный скриптовый язык.

Для более подробной информации о различиях между DelphiScript и языком программирования Delphi см. страницу Различия между DelphiScript и Delphi.

В этом разделе приведены распространённые ключевые слова 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 do statement Оператор
  • 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), массивы или классы, а также связанные с ними интерфейсы.

Остерегайтесь другого использования ключевого слова Interface, которое применяется для разделов Interface/Implementation модуля (unit) Embarcadero Delphi. Эти ключевые слова Interface/Implementation можно использовать в скриптах, но при выполнении скрипта в Altium Designer они по сути игнорируются.

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

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

AI-LocalizedЛокализовано с помощью ИИ
Если вы обнаружили проблему, выделите текст/изображение и нажмитеCtrl + Enter, чтобы отправить нам свой отзыв.
Доступность функциональных возможностей

Набор доступных функциональных возможностей зависит от вашего решения Altium – Altium Develop, редакция Altium Agile (Agile Teams или Agile Enterprise) или Altium Designer (на активной подписке).

Если вы не видите в своем ПО функцию, описанную здесь, свяжитесь с отделом продаж Altium, чтобы узнать больше.

Устаревшая документация

Документация Altium Designer больше не разделена по версиям ПО. Если вам необходим доступ к документации по старым версиям Altium Designer, посетите раздел Устаревшая документация на странице Прочие установщики.

Content