ステートメントと演算子
DelphiScript のステートメント
DelphiScript のステートメントは、他のステートメントを含まない場合に「単純(simple)」と見なされます。単純ステートメントの例としては、代入ステートメントやプロシージャ呼び出しがあります。
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 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
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 counter := start To end Do Begin // code here End;
ForFor..To..DoFor..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 ループ
WhileRepeat
Randomize; I := 0; While I < 1000 do Begin I := I + Random (100); Add ('Random Number: ' + IntToStr (I)); End;
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 Label ステートメント
GotoGoto labellabel: statement
ラベルは有効な識別子であれば何でも構いません。Label 宣言と Goto
Label StartHere; // code StartHere: Beep; Goto StartHere;
Exit ステートメント
ExitTry..FinallyExitFinallyExit
Begin Server := SchServer; If Server = Nil Then Begin ShowError('No SchServer started'); Exit; End;
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 には、論理、算術、Boolean、関係演算子が多数あります。これらの演算子は優先順位(下記参照)によってグループ化されており、Basic や C などで使用される優先順位とは異なります。たとえば、ANDOR
a<b and c<dAND<(a<b) and (c<d)
以下に示す DelphiScript のサポート演算子は、優先順位の順に並んでいます。
優先順位でグループ化された演算子
単項演算子が最も高い優先順位を持つことに注意してください。
|
Boolean またはビット単位の NOT。 |
* |
算術乗算。 |
|
浮動小数点除算。 |
|
整数除算。 |
|
剰余(整数除算の余り)。 |
|
Boolean またはビット単位の AND。 |
|
ビット単位の左シフト。 |
|
ビット単位の右シフト。 |
|
算術加算、文字列連結。 |
- |
算術減算。 |
|
Boolean またはビット単位の OR |
|
Boolean またはビット単位の排他的 OR。 |
|
等しいかどうかをテスト。 |
|
等しくないかどうかをテスト。 |
|
より小さいかどうかをテスト。 |
|
より大きいかどうかをテスト。 |
|
以下かどうかをテスト。 |
|
以上かどうかをテスト。 |
また、^@