Функции

Ниже рассмотрены общие операторы функций, используемые в языке 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;

Процедуры ввода-вывода файлов

В 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

Embarcadero Delphi Set и In , а также операторы работы с множествами +, -, *, = и >= не поддерживаются в 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 . 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 функция используется в качестве замены оператора + . 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 функция используется в качестве замены оператора - . A - B равна SetDifference(A, B).

Функция SetIntersection

Функция SetIntersection функция используется в качестве замены оператора * . 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, оператор Raise оператор используется внутри блока Except блоке.

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 Teams, Altium Agile Enterprise или Altium Designer (при активной подписке).

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

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

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

Content