Razumijevanje vrste Delphi SET

Jedan od Delphi jezik svojstva koja nisu pronađena u drugim modernim jezicima je pojam skupova.

Delphi-apostavljena vrsta je zbir vrijednosti istog rednog tipa.

Skup je definiran pomoću set od ključne riječi:

Vrste skupa obično se definiraju podstranicama.

U gornjem primjeru, TMagicNumber je prilagođeni podstranji tip koji omogućuje varijablama vrste TMagicNumber da primaju vrijednosti od 1 do 34. Jednostavno rečeno, subrange oblik predstavlja podskup vrijednosti u drugom rednom tipu.

Moguće vrijednosti tipa skupa su sve podskupovi osnovnog tipa, uključujući prazan skup.

Ograničenje skupova je da može sadržavati do 255 elemenata.

U gornjem primjeru, vrsta skupa TMagicSet skup je elemenata TMagicNumber - cijeli brojevi od 1 do 34.

Izjava TMagicSet = skup TMagicNumber je jednaka sljedećoj deklaraciji: TMagicSet = skup od 1..34.

Postavite varijable tipa

U gornjem primjeru, varijable emptyMagicSet, oneMagicSet i anotherMagicSet su setovi TMagicNumber.

Do dodijeliti vrijednost na varijablu tipa skupa, upotrijebite uglate zagrade i nabrojite sve elemente skupa. Kao u:

instagram viewer

Napomena 1: svaka varijabla vrste skupa može sadržavati prazan skup, označen sa [].

Napomena 2: redoslijed elemenata u skupu nema značenja, niti je smisleno da se element (vrijednost) dvaput uključi u skup.

Ključna riječ IN

Da provjerim je li element je uključeno u skupu (varijabli) koristite U ključne riječi:

Postavljanje operatora

Na isti način na koji možete zbrojiti dva broja, možete imati skup koji je zbroj dva skupa. Uz skupove vaš događaj ima više operatora:

  • + vraća sjedinjenje dva skupa.
  • - vraća razliku dva skupa.
  • * vraća sjecište dva skupa.
  • = return true ako su dva skupa jednaka - imaju isti element.
  • <= vraća true ako je prvi skup podskup drugog skupa.
  • > = vraća true ako je prvi skup superset drugog skupa.
  • <> vraća se true ako su dva skupa neidentična.
  • IN vraća true ako je element uključen u skup.

Evo primjera:

Hoće li se postupak ShowMessage izvršiti? Ako je odgovor tako, što će biti prikazano?

Evo provedbe funkcije DisplayElements:

Savjet: da. Prikazano: "18 | 24 |".

Integri, likovi, Booleans

Naravno, kod stvaranja skupa vrsta niste ograničeni na cjelobrojne vrijednosti. Delphi redni tipovi uključuju znakovne i boole vrijednosti.

Da biste spriječili korisnike da unose alfa-tipke, dodajte ovaj redak u OnKeyPress kontrole uređivanja:

Postavlja s nabrajanjem

Uobičajeni scenarij u kodu Delphi je kombiniranje i nabrojanih tipova i skupova.

Evo primjera:

Pitanje: hoće li se poruka prikazati? Odgovor: ne :(

Postavlja u Delphi Control Properties

Kad trebate primijeniti "podebljano" na font koji se koristi u kontrolama TEdit, ili koristite Object Inspector ili sljedeći kod:

Svojstvo Font's Style je svojstvo skupa! Evo kako je definirano:

Dakle, nabrojeni tip TFontStyle koristi se kao osnovni tip za postavljeni tip TFontStyles. Svojstvo Style klase TFont je tipa TFontStyles - dakle svojstvo skupa tipa.

Drugi primjer uključuje rezultat funkcije MessageDlg. MessageDlg funkcija koristi se za postavljanje okvira s porukama i dobivanje korisnikovog odgovora. Jedan od parametara funkcije je parametar Buttons tipa TMsgDlgButtons.

TMsgDlgButtons je definiran kao skup (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Ako korisniku prikažete poruku koja sadrži gumbe Da, U redu i Otkaži i želite izvršiti neki kôd ako su kliknuti ili Da ili Ok gumbi, možete koristiti sljedeći kôd:

Završna riječ: setovi su sjajni. Kompleti se mogu činiti zbunjujućim za Delphi početnik, ali čim počnete koristiti varijable zadanog tipa otkrit ćete da pružaju mnogo više nego što je zvučalo u početku.