Sentencias y operadores
Sentencias de DelphiScript
Una sentencia en DelphiScript se considera "simple" cuando no contiene ninguna otra sentencia. Ejemplos de sentencias simples son las sentencias de asignación y las llamadas a procedimientos.
X := Y + 10; // assignment ShowMessage('Hello World!'); // procedure call
Una sentencia compuesta consta de varias sentencias.
Begin If A > B Then ShowMessage('A is bigger'); Else ShowMessage('B is bigger'); A := 0; B := 0; End;
Sentencias condicionales
DelphiScript tiene sentencias de control que afectan el flujo de ejecución dentro de un script. La sentencia de control más común es la sentencia condicional If..Then
Sentencia If Then
La sentencia If..Then
If Condition Then Begin // code here End Else Begin // code here End;
Sentencia Case Of
Para evitar un conjunto complejo de sentencias IfCase
Se puede usar cualquier tipo en una sentencia Case porque DelphiScript es un lenguaje no tipado. Las sentencias Case pueden tener una sentencia Else que se ejecuta si ninguna de las etiquetas corresponde al valor del selector (dentro de la condición 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;
Sentencia With
La sentencia With
Form.Canvas.Pen.Width := 2; Form.Canvas.Pen.Color := clSilver;
With Form.Canvas.Pen do Begin Width := 2; Color := clSilver; End;
Bucle For To Do
La sentencia For..To..Do
For counter := start To end Do Begin // code here End;
ForFor..To..DoDownToFor..To..Do
Bucle Repeat Until
La sentencia RepeatRepeat
Repeat Write('Enter a value (0..9): '); ShowMessage(IntToStr(I)); Until (I >= 0) and (I <= 9);
Bucle While Do
Una sentencia WhileRepeat
Randomize; I := 0; While I < 1000 do Begin I := I + Random (100); Add ('Random Number: ' + IntToStr (I)); End;
Sentencia Continue
La sentencia 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;
Sentencia Goto Label
La sentencia GotoGoto labellabel: statement
Una etiqueta puede ser cualquier identificador válido. La declaración Label y la sentencia Goto
Label StartHere; // code StartHere: Beep; Goto StartHere;
Sentencia Exit
La sentencia ExitExitTry..FinallyFinallyExit
Begin Server := SchServer; If Server = Nil Then Begin ShowError('No SchServer started'); Exit; End;
Sentencia Break
La sentencia 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;
Operadores de expresiones de DelphiScript
En general, una expresión es una combinación válida de constantes, variables, valores literales, operadores y resultados de funciones. Las expresiones se utilizan para determinar el valor que se asignará a una variable, para calcular el parámetro de una función o para comprobar una condición. Las expresiones pueden incluir llamadas a funciones.
DelphiScript tiene varios operadores lógicos, aritméticos, booleanos y relacionales. Estos operadores se agrupan según el orden de precedencia (véase más abajo), que es diferente de los órdenes de precedencia usados por Basic, C, etc. Por ejemplo, los operadores ANDOR
Si escribe a<b and c<dAND<(a<b) and (c<d)
Los operadores compatibles de DelphiScript que se enumeran a continuación se muestran según su orden de precedencia.
Operadores agrupados por precedencia
Tenga en cuenta que los operadores unarios tienen la precedencia más alta.
|
NOT booleano o bit a bit. |
* |
Multiplicación aritmética. |
|
División de punto flotante. |
|
División entera. |
|
módulo (resto de la división entera). |
|
AND booleano o bit a bit. |
|
Desplazamiento de bits a la izquierda. |
|
Desplazamiento de bits a la derecha. |
|
Suma aritmética, concatenación de cadenas. |
- |
Resta aritmética. |
|
OR booleano o bit a bit |
|
OR exclusivo booleano o bit a bit. |
|
Comprueba si es igual o no. |
|
Comprueba si es distinto o no. |
|
Comprueba si es menor que o no. |
|
Comprueba si es mayor que o no. |
|
Comprueba si es menor o igual que o no. |
|
Comprueba si es mayor o igual que o no. |
Tenga en cuenta también que los operadores ^@