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.

Simple statements:

X := Y + 10; // assignment

ShowMessage('Hello World!'); // procedure call

Una sentencia compuesta consta de varias sentencias.

Compound statements:

Begin
  If A > B Then ShowMessage('A is bigger');
  Else ShowMessage('B is bigger');
  A := 0;
  B := 0;
End;

En DelphiScript, cuando se asignan valores a variables, se utiliza el operador dos puntos-igual: :=

Al comprobar la igualdad, se utiliza el operador de igualdad: =

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 se utiliza para el control condicional. La sintaxis es:

If Condition Then
  Begin
  // code here
  End
Else
  Begin
  // code here
  End;

Sentencia Case Of

Para evitar un conjunto complejo de sentencias If, estas a menudo pueden sustituirse por sentencias Case. Una sentencia case en una expresión se utiliza para seleccionar un valor, una lista de valores posibles o un rango de valores.

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).

Example 1:

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;

Example 2:

Case UserName of
  'Jack', 'Joe' : IsAdministrator := true;
  'Fred' : IsAdministrator := false;
else
  Raise('Unknown User');
End;

Sentencia With

La sentencia With es una forma abreviada de DelphiScript. Al hacer referencia a una variable de tipo registro (o a un objeto), se puede usar una sentencia "with" en lugar de repetir su nombre cada vez.

Normal version:

Form.Canvas.Pen.Width := 2;
Form.Canvas.Pen.Color := clSilver;

Version using With:

With Form.Canvas.Pen do
Begin
  Width := 2;
  Color := clSilver;
End;

Bucle For To Do

La sentencia For..To..Do proporciona un método para recorrer repetidamente un bloque de código (una o más líneas de código). La sintaxis básica es:

For counter := start To end Do
Begin
  // code here
End;

ForLos bucles suelen usarse para inicializar un arreglo. La dirección del contador en un bucle For..To..Do puede controlarse usando de forma alternativa la palabra clave DownTo para decrementar el bucle. DelphiScript proporciona la sentencia Break/Exit para salir prematuramente de un bucle For..To..Do.

Bucle Repeat Until

La sentencia Repeat se ejecuta repetidamente hasta que la expresión booleana sea verdadera. La sentencia Repeat siempre se ejecuta al menos una vez.

Example:

Repeat
  Write('Enter a value (0..9): ');
  ShowMessage(IntToStr(I));
Until (I >= 0) and (I <= 9);

Bucle While Do

Una sentencia While es similar a una sentencia Repeat , excepto que la condición de control se evalúa antes de la primera ejecución de la secuencia de sentencias. Por lo tanto, si la condición es falsa, la secuencia de sentencias nunca se ejecuta.

Example:

Randomize;
I := 0;
While I < 1000 do
Begin
  I := I + Random (100);
  Add ('Random Number: ' + IntToStr (I));
End;

Sentencia Continue

La sentencia Continue salta el cuerpo de un bucle, de forma similar a la sentencia Goto. La sentencia continue hace que el script en ejecución pase a la siguiente iteración en el bucle actual For, While o Repeat.

Example:

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 Goto tiene la forma Goto label, que transfiere la ejecución del script a la sentencia marcada por la etiqueta especificada. Para marcar una sentencia, la etiqueta debe declararse primero y luego la sentencia de destino debe ir precedida por la etiqueta y dos puntos: label: statement

Una etiqueta puede ser cualquier identificador válido. La declaración Label y la sentencia Goto deben pertenecer al mismo bloque de código dentro de un script. Por lo tanto, no es posible saltar hacia dentro o hacia fuera de un procedimiento o función.

Example:

Label StartHere;
  // code
StartHere: Beep;
Goto StartHere;

Sentencia Exit

La sentencia Exit retorna inmediatamente de una función o procedimiento. Si llama a Exit desde dentro de un bloque Try..Finally, la parte Finally se ejecuta antes de que la subrutina retorne. Si el procedimiento Exit se llama desde dentro del cuerpo principal del script, entonces la ejecución del script terminará.

Example:

Begin
  Server := SchServer;
  If Server = Nil Then
  Begin
    ShowError('No SchServer started');
    Exit;
End;

Sentencia Break

La sentencia Break hace que el script en ejecución salga del bucle actual For, While o Repeat. La ejecución del script continúa desde la siguiente línea ejecutable después del bucle actual.

Example:

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 AND y OR tienen precedencia con respecto al operador relacional.

Si escribe a<b and c<d, DelphiScript realizará primero la operación AND, lo que producirá un error. Para evitar este problema y definir la prioridad, cada expresión < debe estar entre paréntesis: (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

NOT booleano o bit a bit.

Multiplicative and Bitwise Operators

*

Multiplicación aritmética.

/

División de punto flotante.

div

División entera.

mod

módulo (resto de la división entera).

and

AND booleano o bit a bit.

shl

Desplazamiento de bits a la izquierda.

shr

Desplazamiento de bits a la derecha.

Additive Operators

+

Suma aritmética, concatenación de cadenas.

-

Resta aritmética.

or

OR booleano o bit a bit

xor

OR exclusivo booleano o bit a bit.

Relational and Comparison Operators (lowest precedence)

=

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 ^ y @ no son compatibles con DelphiScript.

AI-LocalizedLocalizado por IA
Si encuentra un problema, seleccione el texto/imagen y presioneCtrl + Enterpara enviarnos sus comentarios.
Disponibilidad de funciones

Las funciones disponibles dependen de la solución de Altium que tenga: Altium Develop, una edición de Altium Agile (Agile Teams o Agile Enterprise), o Altium Designer (con suscripción activa).

Si no ve alguna función mencionada en su software, contacte con Ventas de Altium para obtener más información.

Documentación heredada

La documentación de Altium Designer ya no está versionada. Si necesita acceder a la documentación de versiones anteriores de Altium Designer, visite la sección Documentación heredada de la página de Otros instaladores.

Contenido