機能

DelphiScript 言語で使用される一般的な関数ステートメントを以下に示します。DelphiScript の関数は、FileIO ルーチン、Math ルーチン、String ルーチン、Extension ルーチンの各セクションに分けて説明します。

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 には次の IO ルーチンがあります。

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript ではテキストファイルに情報を書き込めます。また DelphiScript は非型付け言語のため、すべての値は事前に文字列へ変換する必要があります。

ここで、ReadReadLn ルーチンは等価です。どちらも次の行(改行)までを読み込みますが、次の行自体は含みません。Writeln(String) ルーチンは Write(S) および Write(LineFeed + CarriageReturn) ルーチンと等価です。

テキストファイルへ書き出すには、AssignFileReWriteWritelnCloseFile の各プロシージャを使用します。テキストファイルを読み込むには、AssignFileResetReadlnCloseFile の各プロシージャを使用します。以下の例はテキストファイルへ書き込み、行末マーカーを追加します。IO 失敗時にスクリプトの安全性を確保するため、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;

Math ルーチン

DelphiScript には次の math ルーチンがあります。

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

String ルーチン

DelphiScript には、文字列や文字を操作できる次の string ルーチンがあります。以下の表には string ルーチンの一部のみを示します(DelphiScript で使用される string ルーチンの大半は、Embarcadero Delphi の SysUtils ユニットからインポートされています)。

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

 

 

DelphiScript でサポートされる not string ルーチンを以下の表に示します。

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

 

Extension ルーチン

Extension ルーチンは、スクリプト内でサーバープロセス(コマンドとは、必要に応じてパラメータを伴うパッケージ化されたサーバープロセスです)を扱う際に使用します。特に、プロセスのパラメータ用の文字列を抽出または設定する必要がある場合に有用です。ルーチンの一部を以下に示します。

スクリプト内でプロセスのパラメータを実行するには、次の関数が必要になる場合があります。

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 の使用

Embarcadero Delphi の Set および In キーワード、ならびに set 演算子 +, -, *, <= >= は DelphiScript ではサポートされません。等価な Set Operator キーワードを以下の表に示します。

DelphiScript には set 型がありません。DelphiScript スクリプトで set を使用するには、組み込み関数 MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet を使用します。これらの関数により、DelphiScript スクリプト内で set を操作できます。詳細は以下で説明します。

Set 演算子

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

MkSet 関数

MkSet 関数は、可変個の引数を取る set コンストラクタです。例:

Font.Style = MkSet(fsBold,fsItalic);

ここで MkSet(fsBold,fsItalic)  は、2 つの set 要素のみ、すなわち fsBoldfsItalic を表します。

MkSetRange 関数

MkSetRange 関数は、範囲指定の引数を取る set コンストラクタです。例:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

MkSetRange(eTopLayer,eBottomLayer) 関数は、eTopLayer から eBottomLayer までのレイヤー範囲を表します。

InSet 関数

この InSet 関数は、Delphi の In 演算子の代替として使用します。A in BInSet(A, B) と等価です。

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

SetUnion 関数

SetUnion 関数は、Delphi の + 演算子の代替として使用します。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 関数は、Delphi の - 演算子の代替として使用します。A - BSetDifference(A, B) と等価です。

SetIntersection 関数

SetIntersection 関数は、Delphi の * 演算子の代替として使用します。A * BSetIntersection(A, B) と等価です。

SubSet 関数

SubSet 関数は、Object Pascal の <= 演算子の代替として使用します。A <= BSubSet(A, B) と等価です。

例外ハンドラの使用

Try キーワードは、Try-Except ステートメントまたは Try-Finally ステートメントを導入します。これら 2 つのステートメントは関連していますが、目的が異なります。

Try-Finally

Try-Finally では、Try ブロックで例外が発生した場合や、Exit または Break が発生した場合でも、Finally ブロック内のステートメントは常に実行されます。Try-Finally ブロックは、一時オブジェクトやその他のリソースの解放、およびクリーンアップ処理の実行に使用します。

通常、サブルーチン内で必要となる Try-Finally ステートメントは 1 つだけです。

Example:

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

Try-Except

Try-Except は例外的なケースを処理するために使用します。たとえば、特定の例外を捕捉して、エラーログに記録したり、分かりやすいダイアログボックスを作成したりといった有用な処理を行えます。DelphiScript では On キーワードがサポートされないため、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-LocalizedAI で翻訳
問題が見つかった場合、文字/画像を選択し、Ctrl + Enter キーを押してフィードバックをお送りください。
機能の可用性

利用できる機能は、所有する Altium ソリューション (Altium DevelopAltium Agile のエディション (Agile Teams、または Agile Enterprise)、または Altium Designer (有効な期間)) によって異なります。

説明されている機能がお使いのソフトウェアに表示されない場合、Altium の営業担当者にお問い合わせください

従来のドキュメント

Altium Designer のドキュメントは、バージョンごとに掲載されなくなりました。Altium Designer の旧バージョンのドキュメントは、Other Installers ページの Legacy Documentation の項目をご覧ください。

Content