语句和运算符

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;

在 Delphi 脚本中,为变量赋值时使用冒号等号操作符: :=

测试相等时,使用相等运算符: =

条件语句

DelphiScript 的控制语句可影响脚本的执行流程。最常见的控制语句是 If..Then条件语句。

If Then 语句

If..Then语句用于条件控制。语法如下

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

语句的情况

为避免复杂的 If语句,通常可以用 Case语句代替。表达式中的 case 语句用于选择一个值、一个可能值列表或一个值范围。

由于 DelphiScript 是一种无类型语言,因此任何类型都可用于 Case 语句。Case 语句可以包含一个 Else 语句,如果没有任何标签与选择器的值(在 Case Of 条件内)相对应,则 Else 语句将被执行。

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语句是 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 counter := start To end Do
Begin
  // code here
End;

For循环通常用于初始化数组。循环中的计数器方向 For..To..Do循环中的计数器方向可以通过交替使用 DownTo关键字来递减循环。DelphiScript 提供了 Break/Exit 语句来提前退出循环。 For..To..Do循环。

重复循环

Repeat语句反复执行,直到布尔表达式为真。该 Repeat语句总是至少执行一次。

Example:

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

While Do 循环

A While语句与 Repeat语句相似,不同之处在于控制条件是在第一次执行语句序列之前评估的。因此,如果条件为假,语句序列永远不会执行。

Example:

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

继续语句

继续语句 Continue语句跳过循环体,类似于 Goto语句。continue 语句会使正在执行的脚本进入当前循环的下一次迭代。 For, WhileRepeat循环的下一次迭代。

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 标签语句

Goto语句的形式为 Goto label将脚本执行转移到指定标签所标记的语句。要标记语句,必须先声明标签,然后在目标语句前加上标签和冒号: label: statement

标签可以是任何有效的标识符。标签声明和 Goto语句必须属于脚本中的同一代码块。因此,无法跳入或跳出过程或函数。

Example:

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

退出语句

退出语句 Exit语句可立即从函数或存储过程返回。如果在函数或存储过程中调用 Exit语句。 Try..Finally块中调用,则 Finally部分会在子程序返回前执行。如果 Exit过程,脚本的执行将终止。

Example:

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

中断语句

Break语句会使正在执行的脚本退出当前的 For, WhileRepeat循环。脚本将从当前循环后的可执行行继续执行。

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 等语言使用的优先顺序不同。例如 ANDOR运算符的优先级高于关系运算符。

如果您写 a,DelphiScript 将首先执行 AND操作,会导致错误。为防止出现这种问题并定义优先级,每个 表达式需要用括号括起来: (a;

下面列出的 DelphiScript 支持的操作符按优先顺序排列。

按优先级分组的操作符

请注意,一元运算符具有最高优先级。

Not

布尔运算或位运算 NOT。

Multiplicative and Bitwise Operators

*

算术乘法。

/

浮点除法

div

整数除法

mod

模(整数除法的余数)。

and

布尔运算或位与运算。

shl

比特左移

shr

位向右移动

Additive Operators

+

算术加法,字符串连接。

-

算术减法

or

布尔或位运算 OR

xor

布尔运算或位运算 EXCLUSIVE OR。

Relational and Comparison Operators (lowest precedence)

=

测试是否相等。

>

测试是否不相等。

测试是否小于

>

测试是否大于

=

测试是否小于或等于。

>=

测试是否大于或等于。

还要注意 ^@操作符不被 DelphiScript 支持。

AI-LocalizedAI 翻译
如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
功能可用性

您可使用的功能取决于您所选择的 Altium 解决方案 —— Altium DevelopAltium Agile(Agile Teams 或 Agile Enterprise 版本),或仍在有效订阅期内的 Altium Designer。

如果您在软件中未找到文中提及的功能,请联系 Altium 销售团队了解更多信息。

旧版文档

Altium Designer 文档不再提供版本区分。如果您需要访问 Altium Designer 旧版本的文档,请前往其他安装程序页面的旧版文档部分。

Content