Функции

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

Вычисление выражений с помощью функции Evaluate

Встроенная функция Evaluate интерпретирует строку, содержащую корректное математическое выражение, во время выполнения и возвращает результат. Например, вы можете написать скрипт вида Evaluate(ProcNames[ProcIndex]);, и будет вызвана процедура, указанная в ProcNames[ProcIndex].

Чтобы вычислить такое выражение, можно использовать метод Evaluate, где выражение задаётся параметром Expr. Например, можно вычислять выражения, подобные следующим:

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

Передача параметров в функции и процедуры

И функции, и процедуры, определённые в скрипте, можно объявлять так, чтобы они принимали параметры. Кроме того, функции определяются так, чтобы возвращать значение. Типы параметров в объявлениях процедур/функций игнорируются и могут быть опущены. Например, следующий код корректен:

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

Выход из процедуры

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

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

Процедуры File IO

DelphiScript имеет следующие процедуры ввода-вывода:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

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

Здесь процедуры Read и ReadLn эквивалентны — они читают строку до следующего перевода строки, но не включая его. Процедура Writeln(String) эквивалентна Write(S) и процедуре Write(LineFeed + CarriageReturn).

Для записи текстового файла используйте процедуры AssignFile, ReWrite, Writeln и CloseFile. Для чтения текстового файла используйте процедуры AssignFile, Reset, Readln и CloseFile. Пример ниже записывает в текстовый файл и добавляет маркер конца строки. Рекомендуется использовать блок Try / Finally / End, чтобы сделать скрипты надёжными в случае сбоя ввода-вывода.

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;

Математические процедуры

DelphiScript имеет следующие математические процедуры:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Строковые процедуры

DelphiScript имеет следующие строковые процедуры, которые могут манипулировать строками или символами. В таблице ниже показана лишь часть строковых процедур (большинство строковых процедур, используемых DelphiScript, импортируются из модуля SysUtils Embarcadero Delphi):

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

 

 

Строковые процедуры, которые not поддерживаются DelphiScript, приведены в таблице ниже:

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

 

Процедуры расширений

Процедуры расширений используются при работе в скриптах с серверными процессами (команда — это упакованный серверный процесс с параметрами, если они есть), особенно если нужно извлекать или задавать строки для параметров процессов. Некоторые из процедур перечислены ниже.

Для выполнения параметров процессов в скрипте могут потребоваться следующие функции:

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

 

Использование множеств в DelphiScript

Ключевые слова Set и In из Embarcadero Delphi, а также операторы множеств +, -, *, <= и >= в DelphiScript не поддерживаются. Эквивалентные ключевые слова операторов множеств приведены в таблице ниже.

В DelphiScript нет типов множеств. Чтобы использовать множества в скриптах DelphiScript, применяйте встроенные функции: MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection и SubSet, которые позволяют выполнять операции с множествами в скрипте DelphiScript. Ниже они описаны подробнее.

Операторы множеств

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

Функция MkSet

Функция MkSet — это конструктор множества с переменным числом аргументов. Например:

Font.Style = MkSet(fsBold,fsItalic);

Обозначение MkSet(fsBold,fsItalic)  здесь указывает только на два элемента множества: fsBold и fsItalic.

Функция MkSetRange

Функция MkSetRange — это конструктор множества с диапазоном аргументов. Например:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

Функция MkSetRange(eTopLayer,eBottomLayer) обозначает диапазон слоёв от eTopLayer до eBottomLayer.

Функция InSet

Функция InSet используется как замена оператора In в Delphi. A in B эквивалентно InSet(A, B).

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

Функция SetUnion

Функция SetUnion используется как замена оператора + в Delphi. A + B эквивалентно SetUnion(A, B).

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

Функция SetDifference

Функция SetDifference используется как замена оператора - в Delphi. A - B эквивалентно SetDifference(A, B).

Функция SetIntersection

Функция SetIntersection используется как замена оператора * в Delphi. A * B эквивалентно SetIntersection(A, B).

Функция SubSet

Функция SubSet используется как замена оператора <= в Object Pascal. A <= B эквивалентно SubSet(A, B).

Использование обработчиков исключений

Ключевое слово Try вводит оператор Try-Except или Try-Finally. Эти два оператора связаны, но служат разным целям:

Try-Finally

При использовании Try-Finally операторы в блоке Finally выполняются всегда — независимо от того, произошло ли исключение в блоке Try, или был выполнен Exit либо Break. Используйте блок Try-Finally для освобождения временных объектов и других ресурсов и для выполнения действий по очистке.

Обычно в подпрограмме требуется только один оператор Try-Finally.

Example:

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

Try-Except

Используйте Try-Except для обработки исключительных ситуаций. Например, чтобы перехватывать конкретные исключения и делать с ними что-то полезное — например, записывать их в журнал ошибок или создавать понятное пользователю диалоговое окно. Поскольку ключевое слово On в DelphiScript не поддерживается, внутри блока Except используется оператор Raise.

Example:

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

Raise

Ключевое слово Raise связано с ключевым словом Try. Ключевое слово Raise можно использовать без параметров, чтобы повторно сгенерировать последнее исключение. Также его можно использовать со строковым параметром, чтобы сгенерировать исключение с заданным сообщением.

Example:

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

Обратите внимание: поскольку ключевое слово On не поддерживается, объекты Exception (доступные в Embarcadro Delphi) использовать нельзя.

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

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

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

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

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

Content