式と演算子
DelphiScript の文
DelphiScript において、他の文を含まない文は「単純文」と見なされます。単純文の例としては、代入文やプロシージャ呼び出しなどがあります。
X := Y + 10; // assignment ShowMessage('Hello World!'); // procedure call
複合文は、複数の文から構成されます。
Begin If A > B Then ShowMessage('A is bigger'); Else ShowMessage('B is bigger'); A := 0; B := 0; End;
条件文
DelphiScriptには、スクリプト内の実行の流れを制御する制御文があります。最も一般的な制御文は If..Then
If Then 文
If Then 文は If..Then
If Condition Then Begin // code here End Else Begin // code here End;
Case Of 文
複雑な一連の IfCase
DelphiScriptは型付けのない言語であるため、Case文では任意の型を使用できます。Case文にはElse文を含めることができ、これは(Case Of条件内で)セレクタの値に対応するラベルが一つもない場合に実行されます。
Case Char of '+' : Text := 'Plus sign'; '-' : Text := 'Minus sign'; '*', '/': Text := 'Multiplication or division'; '0'..'9': Text := 'Number'; 'a'..'z': Text := 'Lowercase character'; 'A'..'Z': Text := 'Uppercase character'; else Text := 'Unknown character'; End;
Case UserName of 'Jack', 'Joe' : IsAdministrator := true; 'Fred' : IsAdministrator := false; else Raise('Unknown User'); End;
With 文
With With
Form.Canvas.Pen.Width := 2; Form.Canvas.Pen.Color := clSilver;
With Form.Canvas.Pen do Begin Width := 2; Color := clSilver; End;
For To Do ループ
For To Do ループ For..To..Do
For counter := start To end Do Begin // code here End;
ForFor..To..DoDownToFor..To..Do
Repeat Until ループ
この RepeatRepeat
Repeat Write('Enter a value (0..9): '); ShowMessage(IntToStr(I)); Until (I >= 0) and (I = 9);
While Do ループ
A WhileRepeat
Randomize; I := 0; While I 1000 do Begin I := I + Random (100); Add ('Random Number: ' + IntToStr (I)); End;
Continue文
Continue ContinueGotoForWhileRepeat
var F: File; i: Integer; Begin For i := 0 to (FileListBox1.Items.Count - 1) do Begin Try If FileListBox1.Selected[i] Then Begin If not FileExists(FileListBox1.Items.Strings[i]) then Begin MessageDlg('File: ' + FileListBox1.Items.Strings[i] + 'not found', mtError, [mbOk], 0); Continue; End; AssignFile(F, FileListBox1.Items.Strings[i]); Reset(F, 1); ListBox1.Items.Add(IntToStr(FileSize(F))); CloseFile(F); End; Finally { do something here } End; End; End;
Goto ラベル文
GOTOラベル文は GotoGoto labellabel: statement
ラベルには、有効な識別子であれば何でも使用できます。ラベルの宣言と Goto
Label StartHere; // code StartHere: Beep; Goto StartHere;
Exit文
この ExitExitTry..FinallyFinallyExit
Begin Server := SchServer; If Server = Nil Then Begin ShowError('No SchServer started'); Exit; End;
Break文
Break BreakForWhileRepeat
Var S: string; Begin While True do Begin ReadLn(S); Try if S = '' then Break; WriteLn(S); Finally { do something for all cases } End; End; End;
DelphiScript の式演算子
一般に、式とは、定数、変数、リテラル値、演算子、および関数の戻り値の有効な組み合わせのことです。式は、変数に代入する値を決定したり、関数の引数を計算したり、条件を判定したりするために使用されます。式には関数呼び出しを含めることができます。
DelphiScript には、論理演算子、算術演算子、ブール演算子、および関係演算子が多数用意されています。これらの演算子は、優先順位(後述)に基づいてグループ分けされていますが、この優先順位の順序は、Basic や C などで使用されるものとは異なります。例えば、 ANDOR
もし aAND(a
以下に挙げるDelphiScriptでサポートされている演算子は、優先順位の高い順に示されています。
優先順位別に分類された演算子
単項演算子の優先順位が最も高いことに注意してください。
|
ブール値またはビット単位の NOT。 |
* |
算術乗算。 |
|
浮動小数点除算。 |
|
整数の除算。 |
|
剰余(整数除算の余り)。 |
|
ブール値またはビット単位の AND。 |
|
ビット単位の左シフト。 |
|
ビット単位の右シフト。 |
|
算術加算、文字列連結。 |
- |
算術減算。 |
|
ブール値またはビット単位の OR |
|
ブール値のOR、またはビット単位の排他的論理和(XOR)。 |
|
等しいかどうかの判定。 |
|
等しくないかどうかを判定する。 |
より小さいかどうかを判定します。 |
|
|
「より大きい」かどうかを判定します。 |
|
以下であるかどうかを判定します。 |
|
「以上」かどうかを判定します。 |
また、 ^@