Câu lệnh và toán tử

Các câu lệnh trong DelphiScript

Một câu lệnh trong DelphiScript được coi là 'đơn giản' khi nó không chứa bất kỳ câu lệnh nào khác. Ví dụ về các câu lệnh đơn giản là câu lệnh gán và câu lệnh gọi thủ tục.

Simple statements:

X := Y + 10; // assignment

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

Một câu lệnh ghép bao gồm nhiều câu lệnh.

Compound statements:

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

Trong DelphiScript, khi gán giá trị cho biến, người ta sử dụng toán tử dấu hai chấm và dấu bằng: :=

Khi kiểm tra sự bằng nhau, người ta sử dụng toán tử bằng: =

Câu lệnh điều kiện

DelphiScript có các câu lệnh điều khiển ảnh hưởng đến luồng thực thi trong một kịch bản. Câu lệnh điều khiển phổ biến nhất là If..Then câu lệnh điều kiện.

Câu lệnh If Then

Câu lệnh If..Then được sử dụng để điều khiển có điều kiện. Cú pháp như sau:

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

Câu lệnh Case Of

Để tránh một tập hợp phức tạp các If , chúng thường có thể được thay thế bằng Case các câu lệnh. Câu lệnh Case trong một biểu thức được sử dụng để chọn một giá trị, một danh sách các giá trị có thể có hoặc một phạm vi giá trị.

Bất kỳ kiểu dữ liệu nào cũng có thể được sử dụng trong câu lệnh Case vì DelphiScript là một ngôn ngữ không phân biệt kiểu. Câu lệnh Case có thể có một câu lệnh Else được thực thi nếu không có nhãn nào tương ứng với giá trị của bộ chọn (trong điều kiện 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;

Câu lệnh With

Câu lệnh With 'with' là một cách viết tắt trong DelphiScript. Khi tham chiếu đến một biến kiểu bản ghi (hoặc một đối tượng), câu lệnh 'with' có thể được sử dụng thay vì phải lặp lại tên của nó mỗi lần.

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;

Vòng lặp For To Do

Câu For..To..Do cung cấp một phương pháp để lặp lại nhiều lần qua một khối mã (một hoặc nhiều dòng mã). Cú pháp cơ bản là:

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

For Các vòng lặp thường được sử dụng để khởi tạo một mảng. Hướng đếm trong một For..To..Do vòng lặp có thể được điều khiển bằng cách luân phiên sử dụng từ khóa DownTo để giảm giá trị của vòng lặp. DelphiScript cung cấp câu lệnh Break/Exit để thoát khỏi For..To..Do vòng lặp trước thời hạn.

Vòng lặp Repeat Until

Câu lệnh Repeat lệnh này được thực thi lặp đi lặp lại cho đến khi biểu thức Boolean có giá trị true. Lệnh Repeat luôn được thực thi ít nhất một lần.

Example:

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

Vòng lặp While Do

Câu While tương tự như câu lệnh Repeat , ngoại trừ việc điều kiện kiểm soát được đánh giá trước khi thực thi lần đầu tiên chuỗi câu lệnh. Do đó, nếu điều kiện là sai, chuỗi câu lệnh sẽ không bao giờ được thực thi.

Example:

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

Câu lệnh Continue

Lệnh Continue bỏ qua phần thân của vòng lặp, tương tự như câu lệnh Goto . Câu lệnh continue khiến tập lệnh đang thực thi chuyển sang lần lặp tiếp theo trong vòng lặp hiện tại For, While hoặc 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;

Câu lệnh Goto Label

Câu lệnh Goto có dạng Goto label , giúp chuyển hướng việc thực thi kịch bản đến câu lệnh được đánh dấu bằng nhãn đã chỉ định. Để đánh dấu một câu lệnh, trước tiên phải khai báo nhãn, sau đó đặt nhãn và dấu hai chấm trước câu lệnh đích: label: statement

Một nhãn có thể là bất kỳ định danh hợp lệ nào. Việc khai báo nhãn và Goto phải thuộc cùng một khối mã trong tập lệnh. Do đó, không thể nhảy vào hoặc nhảy ra khỏi một thủ tục hoặc hàm.

Example:

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

Câu lệnh Exit

Câu lệnh Exit ngay lập tức trả về từ một hàm hoặc thủ tục. Nếu bạn gọi Exit từ bên trong một Try..Finally khối, phần Finally phần đó sẽ được thực thi trước khi hàm con trả về. Nếu Exit thủ tục được gọi từ bên trong phần thân chính của tập lệnh, thì việc thực thi tập lệnh sẽ kết thúc.

Example:

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

Lệnh Break

Lệnh Break lệnh này khiến tập lệnh đang thực thi thoát khỏi For, While hoặc Repeat vòng lặp. Việc thực thi tập lệnh sẽ tiếp tục từ dòng lệnh tiếp theo sau vòng lặp hiện tại.

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;

Các toán tử biểu thức trong DelphiScript

Nói chung, một biểu thức là sự kết hợp hợp lệ giữa các hằng số, biến, giá trị nguyên văn, toán tử và kết quả hàm. Biểu thức được sử dụng để xác định giá trị gán cho một biến, tính toán tham số của một hàm hoặc kiểm tra một điều kiện. Biểu thức có thể bao gồm các lệnh gọi hàm.

DelphiScript có một số toán tử logic, số học, Boolean và quan hệ. Các toán tử này được nhóm theo thứ tự ưu tiên (xem bên dưới), khác với thứ tự ưu tiên được sử dụng trong Basic, C, v.v. Ví dụ: ANDOR có mức ưu tiên cao hơn so với toán tử so sánh.

Nếu bạn viết a, DelphiScript sẽ thực hiện AND trước, dẫn đến lỗi. Để tránh vấn đề này và xác định thứ tự ưu tiên, mỗi phép toán cần được đặt trong dấu ngoặc đơn: (a;

Các toán tử DelphiScript được hỗ trợ được liệt kê dưới đây theo thứ tự ưu tiên.

Các toán tử được phân nhóm theo mức độ ưu tiên

Lưu ý rằng các toán tử đơn có mức ưu tiên cao nhất.

Not

NOT logic hoặc NOT bitwise.

Multiplicative and Bitwise Operators

*

Phép nhân số học.

/

Phép chia số thực.

div

Phép chia số nguyên.

mod

hàm modulus (phần dư của phép chia số nguyên).

and

Hoặc logic (AND bitwise).

shl

Dịch trái bit.

shr

Dịch bit sang phải.

Additive Operators

+

Phép cộng số học, nối chuỗi.

-

Trừ số học.

or

Hoặc Boolean hoặc Hoặc bit

xor

Hoặc Boolean hoặc Hoặc loại trừ bitwise.

Relational and Comparison Operators (lowest precedence)

=

Kiểm tra xem có bằng nhau hay không.

>

Kiểm tra xem có khác nhau hay không.

Kiểm tra xem có nhỏ hơn hay không.

>

Kiểm tra xem có lớn hơn hay không.

=

Kiểm tra xem có nhỏ hơn hoặc bằng hay không.

>=

Kiểm tra xem có lớn hơn hoặc bằng hay không.

Cũng lưu ý rằng ^@ không được hỗ trợ bởi DelphiScript.

AI-LocalizedBản địa hóa bằng AI
Nếu bạn phát hiện vấn đề, hãy chọn văn bản/hình ảnh và nhấnCtrl + Enterđể gửi phản hồi cho chúng tôi.
Tính khả dụng của tính năng

Các tính năng bạn có thể sử dụng phụ thuộc vào giải pháp Altium mà bạn đang có – Altium Develop, Altium Agile Teams, Altium Agile Enterprise, hoặc Altium Designer (đang trong thời hạn hiệu lực).

Nếu bạn không thấy một tính năng được nêu trong tài liệu có trong phần mềm thực tế của mình, liên hệ Bộ phận Kinh doanh của Altium để tìm hiểu thêm.

Tài liệu cũ

Tài liệu Altium Designer không còn được phân phiên bản. Nếu bạn cần truy cập tài liệu cho các phiên bản cũ hơn của Altium Designer, hãy truy cập mục Tài liệu cũ trên trang Trình cài đặt khác.

Nội dung