Comprensione Delphi SET Type

Uno di Lingua Delphi caratteristiche non presenti in altre lingue moderne è la nozione di set.

Delphi diimpostare il tipo è una raccolta di valori dello stesso tipo ordinale.

Un set viene definito usando set di parola chiave:

I tipi di set sono generalmente definiti con subrange.

Nell'esempio sopra, TMagicNumber è un tipo subrange personalizzato che consente alle variabili del tipo TMagicNumber di ricevere valori da 1 a 34. In poche parole, un tipo di sottorange rappresenta un sottoinsieme dei valori in un altro tipo ordinale.

I valori possibili del tipo di set sono tutti i sottoinsiemi del tipo di base, incluso il set vuoto.

Una limitazione sui set è che possono contenere fino a 255 elementi.

Nell'esempio sopra, il tipo di set TMagicSet è un set di elementi TMagicNumber - numeri interi compresi tra 1 e 34.

La dichiarazione TMagicSet = set di TMagicNumber è uguale alla seguente dichiarazione: TMagicSet = set di 1..34.

Imposta variabili di tipo

Nell'esempio sopra, le variabili emptyMagicSet, oneMagicSet e anotherMagicSet sono set di TMagicNumber.

instagram viewer

Per assegnare un valore in una variabile di tipo set, utilizzare le parentesi quadre ed elencare tutti gli elementi dell'insieme. Come in:

Nota 1: ogni variabile di tipo set può contenere l'insieme vuoto, indicato da [].

Nota 2: l'ordine degli elementi in un set non ha significato, né è significativo che un elemento (valore) sia incluso due volte in un set.

La parola chiave IN

Per verificare se un elemento è incluso nel set (variabile) utilizzare il NEL parola chiave:

Imposta operatori

Allo stesso modo in cui puoi sommare due numeri, puoi avere un set che è la somma di due set. Con i set il tuo evento ha più operatori:

  • + restituisce l'unione di due set.
  • - restituisce la differenza di due serie.
  • * restituisce l'intersezione di due serie.
  • = restituisce vero se due insiemi sono uguali - hanno lo stesso elemento.
  • <= restituisce vero se il primo set è un sottoinsieme del secondo set.
  • > = restituisce vero se il primo set è un superset del secondo set.
  • <> restituisce vero se due insiemi non sono identici.
  • IN restituisce vero se un elemento è incluso nel set.

Ecco un esempio:

La procedura ShowMessage verrà eseguita? In tal caso, cosa verrà visualizzato?

Ecco l'implementazione della funzione DisplayElements:

Suggerimento: si. Visualizzato: "18 | 24 |".

Numeri interi, Personaggi, Booleani

Naturalmente, quando si creano tipi di set, non si è limitati ai valori interi. I tipi ordinali di Delphi includono caratteri e valori booleani.

Per impedire agli utenti di digitare i tasti alfabetici, aggiungere questa riga in OnKeyPress di un controllo di modifica:

Imposta con enumerazioni

Uno scenario comunemente usato nel codice Delphi è quello di mescolare sia tipi enumerati che tipi di set.

Ecco un esempio:

Domanda: verrà visualizzato il messaggio? Risposta: no :(

Imposta in Proprietà controllo Delphi

Quando è necessario applicare "grassetto" al carattere utilizzato nei controlli TEdit, utilizzare la finestra di ispezione oggetti o il codice seguente:

La proprietà Stile del carattere è una proprietà di tipo set! Ecco come viene definito:

Pertanto, un tipo enumerato TFontStyle viene utilizzato come tipo base per il tipo set TFontStyles. La proprietà Style della classe TFont è di tipo TFontStyles, quindi una proprietà di tipo set.

Un altro esempio include il risultato della funzione MessageDlg. Una funzione MessageDlg viene utilizzata per visualizzare una finestra di messaggio e ottenere la risposta dell'utente. Uno dei parametri della funzione è il parametro Buttons di tipo TMsgDlgButtons.

TMsgDlgButtons è definito come un insieme di (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Se visualizzi un messaggio all'utente contenente i pulsanti Sì, OK e Annulla e desideri eseguire un codice se fai clic sui pulsanti Sì o OK, puoi utilizzare il codice successivo:

Parola finale: i set sono fantastici. I set potrebbero apparire confusi con a Principiante Delphi, ma non appena inizierai a utilizzare le variabili di tipo set scoprirai che forniscono molto di più di quanto suonasse all'inizio.

instagram story viewer