機能

以下では、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;

ファイル I/O ルーチン

DelphiScript には、以下の I/O ルーチンがあります。

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) ルーチンと同等です。

テキストファイルを出力するには、 AssignFileReWriteWriteln および CloseFile プロシージャを使用します。テキストファイルを読み込むには、 AssignFileReset, Readln、および CloseFile プロシージャを使用します。以下の例では、テキストファイルに書き込みを行い、改行マーカーを追加しています。IO障害が発生した場合でもスクリプトの安全性を確保するため、 Try / Finally / End ブロックを使用することを推奨します。これにより、I/O エラーが発生した場合でもスクリプトの安全性が確保されます。

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 で使用される文字列ルーチンのほとんどは、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 以下の表に概要を示します:

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 スクリプトで集合を使用するには、組み込み関数を使用してください。 MkSetMkSetRangeInSetSetUnion, SetDifference, SetIntersection、および SubSet DelphiScriptスクリプト内で集合を操作するための関数です。これらについては、以下で詳しく説明します。

集合演算子

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

MkSet関数

MkSet MkSet 関数は、可変個の引数を持つ集合コンストラクタです。例:

Font.Style = MkSet(fsBold,fsItalic);

この MkSet(fsBold,fsItalic) は、2つの集合要素のみを表します。 fsBold また fsItalic

MkSetRange関数

MkSetRange 関数は、引数の範囲を持つ集合コンストラクタです。例:

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 キーワードは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-LocalizedAI で翻訳
問題が見つかった場合、文字/画像を選択し、Ctrl + Enter キーを押してフィードバックをお送りください。
機能の提供状況

ご利用可能な機能は、お使いのAltiumソリューション(Altium DevelopAltium Agile TeamsAltium Agile Enterprise、または有効な契約期間中のAltium Designer)によって異なります。

実際にお使いのソフトウェアに文書化されている機能が表示されない場合は、詳細についてAltium Sales までお問い合わせください。

従来のドキュメント

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

Content