Chức năng

Các câu lệnh hàm thông dụng được sử dụng trong ngôn ngữ DelphiScript được trình bày bên dưới. Phạm vi các hàm của DelphiScript được chia thành các mục cho các thủ tục FileIO, thủ tục toán học, thủ tục chuỗi và thủ tục mở rộng.

Tính toán biểu thức bằng hàm Evaluate

Hàm dựng sẵn Evaluate sẽ diễn giải một chuỗi chứa biểu thức toán học hợp lệ trong lúc chạy và trả về kết quả. Ví dụ, bạn có thể viết một script như Evaluate(ProcNames[ProcIndex]); và thủ tục được chỉ định trong ProcNames[ProcIndex] sẽ được gọi.

Để tính một biểu thức như vậy, bạn có thể dùng phương thức Evaluate trong đó biểu thức được chỉ định bởi tham số Expr. Ví dụ, bạn có thể tính các biểu thức như sau:

Evaluate('2+5');
Evaluate('((10+15)-5)/2*5');
Evaluate('sin(3.1415926/2)*10');
Evaluate('2.5*log(3)');

Truyền tham số cho hàm và thủ tục

Cả hàm và thủ tục được định nghĩa trong một script đều có thể được khai báo để nhận tham số. Ngoài ra, hàm được định nghĩa để trả về một giá trị. Kiểu của tham số trong khai báo procedure/function sẽ bị bỏ qua và có thể lược bỏ. Ví dụ, đoạn mã này là đúng:

Function sum(a, b) : integer;
Begin
  Result := a + b;
End;

Thoát khỏi một thủ tục

DelphiScript cung cấp các câu lệnh ExitBreak để buộc một thủ tục thoát ra trước khi kết thúc một cách tự nhiên. Ví dụ: nếu giá trị của một tham số không phù hợp, bạn có thể muốn đưa ra cảnh báo cho người dùng và thoát ra, như ví dụ dưới đây cho thấy.

Procedure DisplayName (s);
Begin
  If s = '' Then
  Begin
    ShowMessage('Please enter a name');
    Exit;
  End;
  ShowMessage(S + ' is shown');
End;

Các thủ tục File IO

DelphiScript có các thủ tục IO sau:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript cho phép bạn ghi thông tin vào tệp văn bản, và vì DelphiScript là một ngôn ngữ không định kiểu, mọi giá trị trước tiên đều phải được chuyển đổi thành chuỗi.

Tại đây, các thủ tục ReadReadLn là tương đương — chúng đọc một dòng cho đến, nhưng không bao gồm, dòng kế tiếp. Một thủ tục Writeln(String) tương đương với một Write(S) và một thủ tục Write(LineFeed + CarriageReturn).

Để ghi ra tệp văn bản, hãy dùng các thủ tục AssignFile, ReWrite, WritelnCloseFile. Để đọc một tệp văn bản, hãy dùng các thủ tục AssignFile, Reset, ReadlnCloseFile. Ví dụ bên dưới ghi vào một tệp văn bản và thêm ký hiệu kết thúc dòng. Khuyến nghị dùng khối Try / Finally / End để giúp script an toàn trong trường hợp xảy ra lỗi IO.

Example:

Var
  InputFile : TextFile;
  OutputFile : TextFile;
  I          : Integer;
  Line       : String;
Begin
  AssignFile(OutputFile,eConvertedFile.Text);
  Rewrite(OutputFile);
  AssignFile(InputFIle,eOriginalFIle.Text);
  Reset(InputFile);
 
  Try
  While not EOF(InputFile) do
  Begin
    Readln(InputFile,Line);
    For I := 1 to Length(Line) Do
      Line[I] := UpperCase(Line[I]);
      Writeln(Outputfile, Line);
    End;
  Finally
    CloseFile(InputFile);
    CloseFile(OutputFile);
  End;
End;

Các thủ tục toán học

DelphiScript có các thủ tục toán học sau:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Các thủ tục chuỗi

DelphiScript có các thủ tục chuỗi sau, có thể thao tác trên chuỗi hoặc ký tự. Chỉ một phần các thủ tục chuỗi (đa số các thủ tục chuỗi mà DelphiScript dùng được nhập từ unit SysUtils của Embarcadero Delphi) được hiển thị trong bảng dưới đây:

AnsiCompareStr

AnsiCompareText

AnsiDequotedStr

AnsiExtractQuotedStr

AnsiLowerCase

AnsiPos

AnsiQuotedStr

AnsiSameStr

AnsiSameText

AnsiUpperCase

CompareStr

CompareText

Copy

Delete

FloatToStr

FloatToStrF

Format

Frac

Insert

Int

IsDelimiter

LastDelimiter

Length

LowerCase

Ord

Pos

Pred

QuotedStr

Round

SameText

SetLength

StringOfChar

StringToGUID

Succ

Trim

TrimLeft

TrimRight

UpCase

UpperCase

WideUpperCase

WideLowerCase

WideSameStr

WideSameText

 

 

Các thủ tục chuỗi được not DelphiScript hỗ trợ được nêu trong bảng dưới đây:

AnsiContainsStr

AnsiContainsText

AnsiEndsStr

AnsiEndsText

AnsiIndexText

AnsiMatchStr

AnsiMatchText

AnsiReplaceStr

AnsiReplaceText

AnsiResemblesProc

AnsiResemblesText

AnsiStartsStr

AnsiStartsText

Concat

DecodeSoundExInt

DecodeSoundExWord

DupeString

LeftStr

MidStr

NullStr

ReverseString

RightStr

SetString

SoundEx

SoundExCompare

SoundExInt

SoundExProc

SoundExSimilar

SoundExWord

Str

StuffString

Val

 

Các thủ tục mở rộng

Các thủ tục mở rộng được dùng khi làm việc với các tiến trình máy chủ (một lệnh là một tiến trình máy chủ được đóng gói cùng với các tham số, nếu có) trong script, đặc biệt nếu bạn cần trích xuất hoặc thiết lập chuỗi cho các tham số của tiến trình. Một số thủ tục được liệt kê bên dưới.

Để thực thi các tham số của tiến trình trong một script, có thể cần các hàm sau:

AddColorParameter

AddIntegerParameter

AddLongIntParameter

AddSingleParameter

AddWordParameter

GetIntegerParameter

GetStringParameter

ResetParameters

RunProcess

Useful functions:

SetCursorBusy

ResetCursor

CheckActiveServer

GetActiveServerName

GetCurrentDocumentFileName

RunApplication

SaveCurrentDocument

 

 

Useful dialogs:

ConfirmNoYes

ConfirmNoYesCancel

ShowError

ShowInfo

ShowWarning

 

Sử dụng tập hợp trong DelphiScript

Các từ khóa SetIn của Embarcadero Delphi, cùng các toán tử tập hợp +, -, *, <= >= không được hỗ trợ trong DelphiScript. Các từ khóa Toán tử tập hợp tương đương được liệt kê trong bảng dưới đây.

DelphiScript không có kiểu tập hợp. Để sử dụng tập hợp trong các script DelphiScript, hãy dùng các hàm dựng sẵn; các hàm MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersectionSubSet cho phép thao tác tập hợp trong một script DelphiScript. Chúng được mô tả chi tiết hơn bên dưới.

Toán tử tập hợp

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

Hàm MkSet

Hàm MkSet là một hàm tạo tập hợp với số lượng đối số biến đổi. Ví dụ:

Font.Style = MkSet(fsBold,fsItalic);

Tại đây, MkSet(fsBold,fsItalic)  chỉ biểu thị hai phần tử của tập hợp; fsBoldfsItalic.

Hàm MkSetRange

Hàm MkSetRange là một hàm tạo tập hợp với một dải đối số. Ví dụ:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

Hàm MkSetRange(eTopLayer,eBottomLayer) biểu thị một dải lớp từ eTopLayer đến eBottomLayer.

Hàm InSet

Hàm InSet này được dùng để thay thế cho toán tử In của Delphi. A in B tương đương với InSet(A, B).

If InSet(A,B) then
  ShowMessage('A is in B set')
Else
  ShowMessage('A not in B set');

Hàm SetUnion

Hàm SetUnion này được dùng để thay thế cho toán tử + của Delphi. A + B tương đương với SetUnion(A, B).

ASet := BSet + CSet;
// should be changed to:
ASet := SetUnion(BSet,CSet);
// in order to achieve the desired script result.

Hàm SetDifference

Hàm SetDifference này được dùng để thay thế cho toán tử - của Delphi. A - B tương đương với SetDifference(A, B).

Hàm SetIntersection

Hàm SetIntersection này được dùng để thay thế cho toán tử * của Delphi. A * B tương đương với SetIntersection(A, B).

Hàm SubSet

Hàm SubSet này được dùng để thay thế cho toán tử <= của Object Pascal. A <= B tương đương với SubSet(A, B).

Sử dụng bộ xử lý ngoại lệ

Từ khóa Try giới thiệu câu lệnh Try-Except hoặc câu lệnh Try-Finally. Hai câu lệnh này có liên quan với nhau nhưng phục vụ các mục đích khác nhau:

Try-Finally

Với Try-Finally, các câu lệnh trong khối Finally luôn được thực thi bất kể có xảy ra ngoại lệ từ khối Try, hay có Exit hoặc Break hay không. Hãy dùng khối Try-Finally để giải phóng các đối tượng tạm thời và các tài nguyên khác đồng thời thực hiện các hoạt động dọn dẹp.

Thông thường, chỉ cần một câu lệnh Try-Finally trong một chương trình con.

Example:

Reset(F);
Try
  // process file F
Finally
  CloseFile(F);
End;

Try-Except

Hãy dùng Try-Except để xử lý các trường hợp ngoại lệ. Ví dụ, để bắt các ngoại lệ cụ thể và thực hiện điều gì đó hữu ích với chúng, chẳng hạn ghi chúng vào nhật ký lỗi hoặc tạo một hộp thoại thân thiện. Vì từ khóa On không được hỗ trợ trong DelphiScript, câu lệnh Raise được dùng bên trong khối Except.

Example:

Try
  X := Y/Z;
Except
  Raise('A divide by zero error!');
End;

Raise

Từ khóa Raise có liên quan đến từ khóa Try. Từ khóa Raise có thể được dùng mà không cần tham số để phát sinh lại ngoại lệ gần nhất. Nó cũng có thể được dùng với một tham số chuỗi để phát sinh một ngoại lệ bằng một thông điệp cụ thể.

Example:

Raise(Format('Invalid Value Entered : %d', [Height]));

Lưu ý rằng vì từ khóa On không được hỗ trợ, nên các đối tượng Exception (có trong Embarcadro Delphi) không thể được sử dụng.

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