Espressioni e operatori

Istruzioni DelphiScript

Un'istruzione in DelphiScript è considerata "semplice" quando non contiene altre istruzioni. Esempi di istruzioni semplici sono le istruzioni di assegnazione e le chiamate a procedure.

Simple statements:

X := Y + 10; // assignment

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

Un'istruzione composta è costituita da più istruzioni.

Compound statements:

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

In DelphiScript, quando si assegnano valori alle variabili, si utilizza l'operatore "due punti e uguale": :=

Per verificare l'uguaglianza, si utilizza l'operatore di uguaglianza: =

Istruzioni condizionali

DelphiScript dispone di istruzioni di controllo che influenzano il flusso di esecuzione all'interno di uno script. L'istruzione di controllo più comune è l' If..Then istruzione condizionale.

Istruzione If Then

L' If..Then istruzione viene utilizzata per il controllo condizionale. La sintassi è:

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

Istruzione Case Of

Per evitare una serie complessa di If istruzioni, queste possono spesso essere sostituite con Case istruzioni. Un'istruzione Case all'interno di un'espressione viene utilizzata per selezionare un valore, un elenco di valori possibili o un intervallo di valori.

In un'istruzione Case è possibile utilizzare qualsiasi tipo, poiché DelphiScript è un linguaggio non tipizzato. Le istruzioni Case possono includere un'istruzione Else che viene eseguita se nessuna delle etichette corrisponde al valore del selettore (all'interno della condizione 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;

Istruzione With

L' With istruzione «with» è una sintassi abbreviata di DelphiScript. Quando ci si riferisce a una variabile di tipo record (o a un oggetto), è possibile utilizzare un’istruzione «with» invece di ripetere ogni volta il suo nome.

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;

Ciclo For To Do

L' For..To..Do istruzione fornisce un metodo per eseguire ripetutamente un ciclo su un blocco di codice (una o più righe di codice). La sintassi di base è:

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

For I cicli sono spesso utilizzati per inizializzare un array. La direzione del contatore in un For..To..Do ciclo può essere controllata utilizzando alternativamente la DownTo per decrementare il ciclo. DelphiScript fornisce l'istruzione Break/Exit per uscire For..To..Do ciclo prematuramente.

Ciclo Repeat Until

L’ Repeat istruzione viene eseguita ripetutamente finché l’espressione booleana non è vera. L’ Repeat istruzione viene sempre eseguita almeno una volta.

Example:

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

Ciclo While Do

Un’ While istruzione è simile a un’ Repeat , tranne per il fatto che la condizione di controllo viene valutata prima della prima esecuzione della sequenza di istruzioni. Pertanto, se la condizione è falsa, la sequenza di istruzioni non viene mai eseguita.

Example:

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

Istruzione Continue

L' Continue istruzione salta il corpo di un ciclo, in modo simile all’ Goto . L'istruzione continue fa sì che lo script in esecuzione passi all'iterazione successiva nel ciclo corrente 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;

Istruzione Goto Label

L' Goto istruzione ha la forma Goto label che trasferisce l'esecuzione dello script all'istruzione contrassegnata dall'etichetta specificata. Per contrassegnare un'istruzione, è necessario dichiarare prima l'etichetta e poi l'istruzione di destinazione preceduta dall'etichetta e da due punti: label: statement

Un'etichetta può essere qualsiasi identificatore valido. La dichiarazione dell'etichetta e l' Goto l'istruzione devono appartenere allo stesso blocco di codice all'interno di uno script. Pertanto non è possibile effettuare un salto all'interno o all'esterno di una procedura o di una funzione.

Example:

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

Istruzione Exit

L' Exit istruzione restituisce immediatamente il risultato da una funzione o da una procedura. Se la si chiama Exit all'interno di un Try..Finally , la Finally parte viene eseguita prima che la subroutine ritorni. Se la Exit procedura viene chiamata dall’interno del corpo principale dello script, l’esecuzione dello script terminerà.

Example:

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

Istruzione Break

L' Break istruzione fa sì che lo script in esecuzione esca dal For, While o Repeat . L'esecuzione dello script prosegue dalla riga eseguibile successiva al ciclo corrente.

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;

Operatori delle espressioni in DelphiScript

In generale, un'espressione è una combinazione valida di costanti, variabili, valori letterali, operatori e risultati di funzioni. Le espressioni vengono utilizzate per determinare il valore da assegnare a una variabile, per calcolare il parametro di una funzione o per verificare una condizione. Le espressioni possono includere chiamate a funzioni.

DelphiScript dispone di una serie di operatori logici, aritmetici, booleani e relazionali. Questi operatori sono raggruppati in base all’ordine di precedenza (vedi sotto), che è diverso dagli ordini di precedenza utilizzati da Basic, C, ecc. Ad esempio, l’ AND e OR hanno precedenza rispetto a quello relazionale.

Se si scrive a, DelphiScript eseguirà prima l’ AND operazione per prima, generando un errore. Per evitare questo problema e definire la priorità, ogni espressione deve essere racchiusa tra parentesi: (a;

Gli operatori DelphiScript supportati elencati di seguito sono riportati in ordine di precedenza.

Operatori raggruppati per precedenza

Si noti che gli operatori unari hanno la massima precedenza.

Not

NOT booleano o bit a bit.

Multiplicative and Bitwise Operators

*

Moltiplicazione aritmetica.

/

Divisione in virgola mobile.

div

Divisione intera.

mod

Modulo (resto della divisione intera).

and

AND booleano o bit a bit.

shl

Spostamento a sinistra bit a bit.

shr

Spostamento a destra bit a bit.

Additive Operators

+

Addizione aritmetica, concatenazione di stringhe.

-

Sottrazione aritmetica.

or

OR booleano o bit a bit

xor

OR booleano o OR bit a bit ESCLUSIVO.

Relational and Comparison Operators (lowest precedence)

=

Verifica se sono uguali o meno.

>

Verifica se non è uguale o meno.

Verifica se è minore o meno.

>

Verifica se è maggiore o meno.

=

Verifica se è minore o uguale o meno.

>=

Verifica se è maggiore o uguale o meno.

Si noti inoltre che il ^ e @ non sono supportati da DelphiScript.

AI-LocalizedLocalizzato tramite A
Se trovi un problema, seleziona il testo/l’immagine e premi Ctrl + Enter per inviarci il tuo feedback.
Disponibilità delle funzionalità

Le funzionalità a tua disposizione dipendono dalla soluzione Altium di cui disponi: Altium Develop, Altium Agile Teams, Altium Agile Enterprise oppure Altium Designer (con abbonamento attivo).

Se non vedi una funzionalità documentata nel software che stai effettivamente utilizzando, contatta il reparto vendite di Altium per saperne di più.

Documentazione legacy

La documentazione di Altium Designer non è più suddivisa per versione. Se è necessario accedere alla documentazione delle versioni precedenti di Altium Designer, visitare la sezione Documentazione legacy della pagina Altri programmi di installazione.

Contenuto