Операторы и выражения

Операторы DelphiScript

Оператор в DelphiScript считается «простым», если он не содержит никаких других операторов. Примерами простых операторов являются операторы присваивания и вызовы процедур.

Simple statements:

X := Y + 10; // assignment

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

Составное оператор состоит из нескольких операторов.

Compound statements:

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

В DelphiScript при присвоении значений переменным используется оператор «двоеточие-равно»: :=

При проверке на равенство используется оператор равенства: =

Условные операторы

В DelphiScript имеются операторы управления, которые влияют на ход выполнения скрипта. Наиболее распространённым оператором управления является If..Then условный оператор.

Оператор If Then

Оператор If..Then оператор используется для условного управления. Синтаксис следующий:

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

Оператор «Case Of»

Чтобы избежать использования сложного набора 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;

Оператор With

Оператор With Оператор «with» является сокращением в DelphiScript. При обращении к переменной типа записи (или объекту) можно использовать оператор «with» вместо того, чтобы каждый раз повторять её имя.

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;

Цикл «For To Do»

Оператор For..To..Do Оператор «For To Do Loop» позволяет выполнять циклическое повторение блока кода (одной или нескольких строк кода). Основной синтаксис:

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

For Циклы часто используются для инициализации массива. Направление счётчика в For..To..Do цикле можно регулировать, поочередно используя DownTo ключевое слово для уменьшения счётчика цикла. DelphiScript предоставляет оператор Break/Exit для преждевременного выхода из For..To..Do цикла досрочно.

Цикл «Repeat Until»

Оператор Repeat Оператор выполняется повторно до тех пор, пока булево выражение не станет истинным. Repeat Оператор всегда выполняется как минимум один раз.

Example:

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

Цикл «While Do»

Оператор While оператор аналогичен оператору Repeat , за исключением того, что условие управления вычисляется перед первым выполнением последовательности операторов. Следовательно, если условие ложно, последовательность операторов никогда не выполняется.

Example:

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

Оператор Continue

Оператор Continue Оператор «Continue» пропускает тело цикла, аналогично оператору Goto . Оператор continue заставляет выполняющийся скрипт перейти к следующей итерации в текущем For, While или 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;

Оператор Goto Label

Оператор Goto имеет следующий вид Goto label которая переносит выполнение скрипта к оператору, помеченному указанной меткой. Чтобы пометить оператор, сначала необходимо объявить метку, а затем перед целевым оператором указать метку, отделенную двоеточием: label: statement

Метка может быть любым допустимым идентификатором. Объявление метки и Goto оператор должны принадлежать одному и тому же блоку кода в рамках скрипта. Поэтому невозможно выполнить переход внутрь или из процедуры или функции.

Example:

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

Оператор Exit

Оператор Exit оператор немедленно возвращает управление из функции или процедуры. Если вы вызываете Exit изнутри Try..Finally блока, часть Finally этот фрагмент будет выполнен до того, как подпрограмма завершит работу. Если Exit процедура вызывается из основного тела скрипта, выполнение скрипта завершается.

Example:

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

Оператор break

Оператор Break Оператор заставляет выполняющийся скрипт выйти из текущего For, While или Repeat цикла. Выполнение скрипта продолжается со следующей исполняемой строки после текущего цикла.

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;

Операторы выражений DelphiScript

В общем случае выражение представляет собой допустимое сочетание констант, переменных, литеральных значений, операторов и результатов вызова функций. Выражения используются для определения значения, которое будет присвоено переменной, для вычисления параметра функции или для проверки условия. Выражения могут содержать вызовы функций.

В DelphiScript имеется ряд логических, арифметических, булевых и реляционных операторов. Эти операторы сгруппированы по порядку приоритета (см. ниже), который отличается от порядка приоритета, используемого в Basic, C и т. д. Например, оператор AND и OR имеют более высокий приоритет по сравнению с оператором сравнения.

Если вы напишете a, DelphiScript сначала выполнит AND операцию, что приведёт к ошибке. Чтобы избежать этой проблемы и определить приоритет, каждое выражение необходимо заключить в скобки: (a;

Перечисленные ниже поддерживаемые операторы DelphiScript приведены в порядке их приоритета.

Операторы, сгруппированные по приоритету

Обратите внимание, что унарные операторы имеют наивысший приоритет.

Not

Булево или битовое «НЕ».

Multiplicative and Bitwise Operators

*

Арифметическое умножение.

/

Деление с плавающей запятой.

div

Целочисленное деление.

mod

Модуль (остаток от целочисленного деления).

and

Булево или битовое «И».

shl

Побитовый сдвиг влево.

shr

Побитовый сдвиг вправо.

Additive Operators

+

Арифметическое сложение, конкатенация строк.

-

Арифметическое вычитание.

or

Логическое ИЛИ или битовое ИЛИ

xor

Логическое «ИЛИ» или битовое «ИЛИ ПО ИСКЛЮЧЕНИЮ».

Relational and Comparison Operators (lowest precedence)

=

Проверка на равенство.

>

Проверка на неравенство.

Проверка на меньшее или нет.

>

Проверка на то, больше ли значение или нет.

=

Проверка на то, меньше или равно ли значение, или нет.

>=

Проверить, больше или равно ли значение.

Также обратите внимание, что ^ и @ не поддерживаются в DelphiScript.

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

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

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

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

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

Content