Câu lệnh & Toán tử

Các câu lệnh trong DelphiScript

Một câu lệnh trong DelphiScript được xem là 'đơn' khi nó không chứa bất kỳ câu lệnh nào khác. Ví dụ về câu lệnh đơn là câu lệnh gán và lời 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, toán tử hai chấm-bằng được sử dụng: :=

Khi kiểm tra sự bằng nhau, toán tử bằng được sử dụ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 script. Câu lệnh điều khiển phổ biến nhất là câu lệnh điều kiện If..Then.

Câu lệnh If Then

Câu lệnh If..Then được dùng để điều khiển theo điều kiện. Cú pháp là:

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 câu lệnh If, chúng thường có thể được thay thế bằng các câu lệnh Case. Câu lệnh case trong một biểu thức được dùng để chọn một giá trị, một danh sách các giá trị có thể có hoặc một khoảng giá trị.

Bất kỳ kiểu dữ liệu nào cũng có thể được dùng trong câu lệnh Case vì DelphiScript là ngôn ngữ không định kiểu. Câu lệnh Case có thể có 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 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ó thể dùng câu lệnh 'with' thay vì 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 lệnh For..To..Do cung cấp một phương pháp để lặp đi lặp lại 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 thường được dùng để khởi tạo một mảng. Hướng đếm trong vòng lặp For..To..Do có thể được điều khiển bằng cách dùng từ khóa DownTo để giảm dần vòng lặp. DelphiScript cung cấp câu lệnh Break/Exit để thoát sớm khỏi vòng lặp For..To..Do.

Vòng lặp Repeat Until

Câu lệnh Repeat được thực thi lặp lại cho đến khi biểu thức Boolean là true. Câu 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 lệnh While tương tự như câu lệnh Repeat, ngoại trừ điều kiện điều khiển được đánh giá trước lần thực thi đầu tiên của chuỗi câu lệnh. Vì vậy, nếu điều kiện là false, 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

Câu lệnh Continue bỏ qua phần thân của một vòng lặp, tương tự như câu lệnh Goto. Câu lệnh continue làm cho script đang chạy chuyển sang lần lặp tiếp theo trong vòng lặp For, While hoặc Repeat hiện tại.

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, dùng để chuyển việc thực thi script đế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 nhãn phải được khai báo, sau đó câu lệnh đích phải được đặt trước bởi nhãn và dấu hai chấm: label: statement

Một Label có thể là bất kỳ định danh hợp lệ nào. Khai báo Label và câu lệnh Goto phải thuộc cùng một khối mã trong script. 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 khối Try..Finally, phần Finally sẽ được thực thi trước khi chương trình con trả về. Nếu thủ tục Exit được gọi từ trong phần thân chính của script, thì việc thực thi script sẽ kết thúc.

Example:

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

Câu lệnh Break

Câu lệnh Break làm cho script đang thực thi thoát khỏi vòng lặp For, While hoặc Repeat hiện tại. Việc thực thi script tiếp tục từ dòng lệnh thực thi kế tiếp 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;

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ệ của hằng số, biến, giá trị literal, toán tử và kết quả hàm. Biểu thức được dùng để xác định giá trị gán cho biến, để tính 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 lời 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 dùng trong Basic, C, v.v. Ví dụ, các toán tử ANDOR có độ ưu tiên cao hơn toán tử quan hệ.

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

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

Các toán tử được nhóm theo thứ tự ưu tiên

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

Not

NOT Boolean hoặc theo bit.

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

phép lấy modulo (phần dư của phép chia số nguyên).

and

AND Boolean hoặc theo bit.

shl

Dịch trái theo bit.

shr

Dịch phải theo bit.

Additive Operators

+

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

-

Phép trừ số học.

or

OR Boolean hoặc theo bit

xor

EXCLUSIVE OR Boolean hoặc theo bit.

Relational and Comparison Operators (lowest precedence)

=

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

<>

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

<

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

>

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

<=

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

>=

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

Ngoài ra, cũng lưu ý rằng các toán tử ^@ không được DelphiScript hỗ trợ.

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 có sẵn cho bạn phụ thuộc vào giải pháp Altium mà bạn đang sử dụng – Altium Develop, một phiên bản của Altium Agile (Agile Teams hoặc Agile Enterprise), hoặc Altium Designer (đang còn hiệu lực).

Nếu bạn không thấy tính năng được đề cập trong phần mềm 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