Istruzioni 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 di procedura.

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 i valori vengono assegnati alle variabili, viene utilizzato l’operatore due punti uguale: :=

Quando si verifica l’uguaglianza, viene utilizzato 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’istruzione condizionale If..Then.

Istruzione If Then

L’istruzione If..Then 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 un insieme complesso di istruzioni If, queste possono spesso essere sostituite con istruzioni Case. Un’istruzione case in un’espressione viene utilizzata per selezionare un valore, un elenco di valori possibili o un intervallo di valori.

In un’istruzione Case possono essere utilizzati tipi di qualsiasi genere perché DelphiScript è un linguaggio non tipizzato. Le istruzioni Case possono avere 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’istruzione With è una forma abbreviata di DelphiScript. Quando si fa riferimento a una variabile di tipo record (o a un oggetto), è possibile usare un’istruzione "with" invece di ripeterne ogni volta il 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’istruzione For..To..Do fornisce un metodo per eseguire ripetutamente un ciclo attraverso un blocco di codice (una o più righe di codice). La sintassi di base è:

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

ForI cicli sono spesso utilizzati per inizializzare un array. La direzione del contatore in un ciclo For..To..Do può essere controllata utilizzando in alternativa la parola chiave DownTo per decrementare il ciclo. DelphiScript fornisce l’istruzione Break/Exit per uscire anticipatamente da un ciclo For..To..Do.

Ciclo Repeat Until

L’istruzione Repeat viene eseguita ripetutamente finché l’espressione booleana non è vera. L’istruzione Repeat 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’istruzione While è simile a un’istruzione 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’istruzione Continue salta il corpo di un ciclo, in modo simile all’istruzione 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’istruzione Goto ha la forma Goto label e trasferisce l’esecuzione dello script all’istruzione contrassegnata dall’etichetta specificata. Per contrassegnare un’istruzione, l’etichetta deve essere prima dichiarata e quindi l’istruzione di destinazione deve essere preceduta dall’etichetta e da due punti: label: statement

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

Example:

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

Istruzione Exit

L’istruzione Exit restituisce immediatamente il controllo da una funzione o procedura. Se si chiama Exit dall’interno di un blocco Try..Finally, la parte Finally viene eseguita prima che la subroutine restituisca il controllo. Se la procedura Exit 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’istruzione Break fa sì che lo script in esecuzione esca dal ciclo corrente For, While o Repeat. L’esecuzione dello script continua dalla riga eseguibile successiva dopo il 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 di espressione DelphiScript

In generale, un’espressione è una combinazione valida di costanti, variabili, valori letterali, operatori e risultati di funzione. 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 di funzione.

DelphiScript dispone di numerosi 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, gli operatori AND e OR hanno precedenza rispetto a quelli relazionali.

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

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

Operatori raggruppati per precedenza

Si noti che gli operatori unari hanno la precedenza più alta.

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

Shift a sinistra bit a bit.

shr

Shift a destra bit a bit.

Additive Operators

+

Addizione aritmetica, concatenazione di stringhe.

-

Sottrazione aritmetica.

or

OR booleano o bit a bit

xor

XOR booleano o bit a bit.

Relational and Comparison Operators (lowest precedence)

=

Verifica se è uguale 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 gli operatori ^ e @ non sono supportati da DelphiScript.

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

Le funzionalità disponibili dipendono dalla soluzione Altium in uso – Altium Develop, un’edizione di Altium Agile (Agile Teams o Agile Enterprise), oppure Altium Designer (con licenza attiva).

Se non vedi nel tuo software una funzionalità descritta,  contatta il team 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