Функции
Ниже рассмотрены общие операторы функций, используемые в языке DelphiScript. Набор функций DelphiScript представлен в разделах, посвящённых процедурам FileIO, математическим процедурам, процедурам работы со строками и расширительным процедурам.
Вычисление выражений с помощью функции Evaluate
Встроенная функция EvaluateEvaluate(ProcNames[ProcIndex]);ProcNames[ProcIndex]
Для вычисления такого выражения можно использовать EvaluateExpr
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 предоставляет ExitBreak
Procedure DisplayName (s); Begin If s = '' Then Begin ShowMessage('Please enter a name'); Exit; End; ShowMessage(S + ' is shown'); End;
Процедуры ввода-вывода файлов
В DelphiScript имеются следующие процедуры ввода-вывода:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DelphiScript позволяет записывать информацию в текстовый файл, и, поскольку DelphiScript является языком без типов, все значения сначала необходимо преобразовать в строки.
Здесь ReadReadLnWriteln(String)Write(S)Write(LineFeed + CarriageReturn)
Чтобы записать текстовый файл, используйте процедуру AssignFileReWriteWritelnCloseFileAssignFileResetReadlnCloseFileTry / Finally / End
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 имеет следующие математические процедуры:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Строковые процедуры
DelphiScript предоставляет следующие строковые процедуры, которые позволяют манипулировать строками или символами. В приведенной ниже таблице показана лишь часть строковых процедур (большинство строковых процедур, используемых в DelphiScript, импортировано из модуля SysUtils библиотеки Embarcadero Delphi):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Процедуры работы со строками,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Процедуры расширения
Процедуры расширения используются при работе со серверными процессами (команда представляет собой упакованный серверный процесс с параметрами, если таковые имеются) в скриптах, особенно если требуется извлечь или задать строковые значения для параметров процессов. Некоторые из этих процедур перечислены ниже.
Для работы с параметрами процессов в скрипте могут потребоваться следующие функции:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Использование наборов в DelphiScript
Embarcadero Delphi SetIn+, -, *, = >=
В DelphiScript нет типов множеств. Для использования множеств в скриптах DelphiScript следует использовать встроенные функции; MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet
Операторы над множествами
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
Функция MkSet
Функция MkSet
Font.Style = MkSet(fsBold,fsItalic);
Здесь MkSet(fsBold,fsItalic) fsBoldfsItalic
Функция MkSetRange
Функция MkSetRange
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
Функция MkSetRange(eTopLayer,eBottomLayer)eTopLayereBottomLayer
Функция InSet
Эта InSetInA in BInSet(A, B)
If InSet(A,B) then ShowMessage('A is in B set') Else ShowMessage('A not in B set');
Функция SetUnion
Функция SetUnion + A + BSetUnion(A, B)
ASet := BSet + CSet; // should be changed to: ASet := SetUnion(BSet,CSet); // in order to achieve the desired script result.
Функция SetDifference
Функция SetDifference - A - BSetDifference(A, B)
Функция SetIntersection
Функция SetIntersection * A * BSetIntersection(A, B)
Функция SubSet
Функция SubSet=A = BSubSet(A, B)
Использование обработчиков исключений
Ключевое слово Try
Try-Finally
В конструкции Try-Finally операторы в блоке Finally всегда выполняются, независимо от того, произошло ли исключение из блока Try, вызов Exit или Break. Используйте блок Try-Finally для освобождения временных объектов и других ресурсов, а также для выполнения операций очистки.
Как правило, в подпрограмме требуется только один оператор Try-Finally.
Reset(F); Try // process file F Finally CloseFile(F); End;
Try-Except
Используйте Try-Except для обработки исключительных ситуаций. Например, для перехвата определённых исключений и выполнения с ними полезных действий, таких как запись в журнал ошибок или отображение удобного диалогового окна. Поскольку OnRaiseExcept
Try X := Y/Z; Except Raise('A divide by zero error!'); End;
Raise
Ключевое RaiseTryRaise
Raise(Format('Invalid Value Entered : %d', [Height]));
Обратите внимание, что, поскольку OnException