Înțelegerea tipului SET Delphi

Unul dintre Limba Delphi caracteristicile care nu se regăsesc în alte limbi moderne este noțiunea de seturi.

Delphitip set este o colecție de valori identice tip ordinal.

Un set este definit folosind set de cuvinte cheie:

Tipurile de seturi sunt de obicei definite cu subranges.

În exemplul de mai sus, TMagicNumber este un tip personalizat de subrange care permite variabilelor de tipul TMagicNumber să primească valori de la 1 la 34. Mai simplu spus, un tip subrange reprezintă un subset de valori într-un alt tip ordinal.

Valorile posibile ale tipului de set sunt toate subseturile tipului de bază, inclusiv setul gol.

O limitare a seturilor este aceea că pot conține până la 255 de elemente.

În exemplul de mai sus, tipul de set TMagicSet este un set de elemente TMagicNumber - numere întregi de la 1 la 34.

Declarația TMagicSet = set de TMagicNumber este egal cu următoarea declarație: TMagicSet = set de 1..34.

Setează variabile de tip

În exemplul de mai sus, variabilele emptyMagicSet, oneMagicSet și anotherMagicSet sunt seturi de TMagicNumber.

instagram viewer

La alocați o valoare la o variabilă de tip set, utilizați parantezele pătrate și listați toate elementele setului. Ca în:

Notă 1: fiecare variabilă de tip set poate păstra setul gol, notat cu [].

Nota 2: ordinea elementelor dintr-un set nu are niciun sens și nici nu are sens pentru un element (valoare) să fie inclus de două ori într-un set.

Cuvântul cheie IN

Pentru a testa dacă un element este inclus în set (variabilă) folosiți ÎN cuvinte cheie:

Set Operatori

În același mod puteți însuma două numere, puteți avea un set care este suma a două seturi. Cu seturi, evenimentul dvs. are mai mulți operatori:

  • + returnează unirea a două seturi.
  • - returnează diferența a două seturi.
  • * returnează intersecția a două seturi.
  • = return true dacă două seturi sunt egale - au același element.
  • <= returnează adevărat dacă primul set este un subset al celui de-al doilea set.
  • > = returnează true dacă primul set este o supersetare a celui de-al doilea set.
  • <> returnează adevărat dacă două seturi nu sunt identice.
  • IN returnează true dacă un element este inclus în set.

Iată un exemplu:

Se va executa procedura ShowMessage? Dacă da, ce va fi afișat?

Iată implementarea funcției DisplayElements:

Sugestie: da. Afișat: "18 | 24 |".

Numere întregi, personaje, booleane

Desigur, atunci când creați tipuri de set, nu sunteți restricționat la valori întregi. Tipurile de Delphi ordinal includ valori de caracter și boolean.

Pentru a împiedica utilizatorii să tasteze tastele alfa, adăugați această linie în onkeypress a unui control de editare:

Seturi cu Enumerații

Un scenariu frecvent utilizat în codul Delphi este acela de a amesteca atât tipurile enumerate cât și tipurile setate.

Iată un exemplu:

Întrebare: mesajul va fi afișat? Răspuns: nu :(

Setează în Delphi Control Properties

Când trebuie să aplicați „bold” la fontul folosit în controalele TEdit, utilizați Inspectorul de obiect sau următorul cod:

Proprietatea stilului fontului este o proprietate de tip set! Iată cum este definit:

Deci, un tip enumerat TFontStyle este utilizat ca tip de bază pentru tipul de set TFontStyles. Proprietatea Style din clasa TFont este de tip TFontStyles - deci o proprietate de tip set.

Un alt exemplu include rezultatul funcției MessageDlg. O funcție MessageDlg este utilizată pentru a crea o casetă de mesaje și pentru a obține răspunsul utilizatorului. Unul dintre parametrii funcției este parametrul Butoane de tip TMsgDlgButtons.

TMsgDlgButtons este definit ca un set de (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Dacă afișați un mesaj utilizatorului care conține butoane Da, OK și Cancel și doriți să executați un anumit cod dacă s-au făcut clic pe butoanele Da sau Ok, puteți utiliza următorul cod:

Cuvânt final: seturile sunt grozave. Seturile pot părea confuze cu a Începător Delphi, dar de îndată ce începeți să folosiți variabile de tip set, veți afla că acestea furnizează mult mai mult, atunci a sunat la început.