Операторы и выражения
Операторы 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 Condition Then Begin // code here End Else Begin // code here End;
Оператор «Case Of»
Чтобы избежать использования сложного набора IfCase
В операторе Case можно использовать любые типы, поскольку DelphiScript является языком без типизации. Операторы 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..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
Метка может быть любым допустимым идентификатором. Объявление метки и 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
Оператор 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 приведены в порядке их приоритета.
Операторы, сгруппированные по приоритету
Обратите внимание, что унарные операторы имеют наивысший приоритет.
|
Булево или битовое «НЕ». |
* |
Арифметическое умножение. |
|
Деление с плавающей запятой. |
|
Целочисленное деление. |
|
Модуль (остаток от целочисленного деления). |
|
Булево или битовое «И». |
|
Побитовый сдвиг влево. |
|
Побитовый сдвиг вправо. |
|
Арифметическое сложение, конкатенация строк. |
- |
Арифметическое вычитание. |
|
Логическое ИЛИ или битовое ИЛИ |
|
Логическое «ИЛИ» или битовое «ИЛИ ПО ИСКЛЮЧЕНИЮ». |
|
Проверка на равенство. |
|
Проверка на неравенство. |
Проверка на меньшее или нет. |
|
|
Проверка на то, больше ли значение или нет. |
|
Проверка на то, меньше или равно ли значение, или нет. |
|
Проверить, больше или равно ли значение. |
Также обратите внимание, что ^@