En av Delphi-språk funksjoner som ikke finnes på andre moderne språk, er forestillingen om sett.
Delphissett type er en samling av verdier av det samme ordinal type.
Et sett er definert ved å bruke sett med søkeord:
Setttyper er vanligvis definert med subranges.
I eksemplet over er TMagicNumber en tilpasset subrange-type som lar variabler av TMagicNumber-typen motta verdier fra 1 til 34. Enkelt sagt representerer en subrange-type en undergruppe av verdiene i en annen ordinær type.
Mulige verdier for setttypen er alle delmengdene av basetypen, inkludert det tomme settet.
En begrensning på sett er at de kan inneholde opptil 255 elementer.
I eksemplet over er TMagicSet-setttypen et sett med TMagicNumber-elementer - heltall fra 1 til 34.
Erklæringen TMagicSet = sett med TMagicNumber er lik følgende erklæring: TMagicSet = sett med 1..34.
Angi typevariabler
I eksemplet over er variablene emptyMagicSet, oneMagicSet og anotherMagicSet er sett med TMagicNumber.
Til tilordne en verdi til en setttypevariabel, bruk de firkantede parentesene og list alle elementene i settet. Som i:
Merknad 1: hver variabeltype kan inneholde det tomme settet, betegnet med [].
Merknad 2: rekkefølgen på elementene i et sett har ingen betydning, og det er heller ikke meningsfylt at et element (verdi) blir inkludert to ganger i et sett.
IN-nøkkelordet
For å teste om et element er inkludert i settet (variabelen) bruker du I søkeord:
Still operatører
På samme måte som du kan summere to tall, kan du ha et sett som er summen av to sett. Med sett ditt arrangement har flere operatører:
- + returnerer foreningen av to sett.
- - returnerer forskjellen på to sett.
- * returnerer krysset mellom to sett.
- = return true hvis to sett er like - har samme element.
- <= returnerer true hvis det første settet er en undergruppe av det andre settet.
- > = returnerer true hvis det første settet er et supersett fra det andre settet.
- <> returnerer true hvis to sett er ikke identiske.
- IN returnerer true hvis et element er inkludert i settet.
Her er et eksempel:
Vil ShowMessage-prosedyren bli utført? Hva vil i så fall vises?
Her er implementeringen av DisplayElements-funksjonen:
Tips: ja. Viste: "18 | 24 |".
Heltall, karakterer, booleanere
Når du lager setttyper, er du selvfølgelig ikke begrenset til heltallverdier. Delphi ordinaltyper inkluderer karakter og boolske verdier.
For å forhindre at brukere skriver alfataster, legger du til denne linjen i onkeypress av en redigeringskontroll:
Sett med enumerations
Et ofte brukt scenario i Delphi-koden er å blande både oppregnete typer og setttyper.
Her er et eksempel:
Spørsmål: vil meldingen vises? Svar: nei :(
Setter inn Delphi Control Properties
Når du trenger å bruke "fet skrift" på skriften som brukes i TEdit-kontroller, bruker du enten Objektinspektøren eller følgende kode:
Font's Style-egenskapen er en fast egenskap! Slik er det definert:
Så en nummerert type TFontStyle brukes som basetype for den angitte typen TFontStyles. Style-egenskapen til TFont-klassen er av typen TFontStyles - derfor en fast type-egenskap.
Et annet eksempel inkluderer resultatet av MessageDlg-funksjonen. En MessageDlg-funksjon brukes til å få opp en meldingsboks og få brukerens svar. En av parameterne til funksjonen er knappene-parameteren av typen TMsgDlgButtons.
TMsgDlgButtons er definert som et sett med (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).
Hvis du viser en melding til brukeren som inneholder Ja, OK og Avbryt knapper og du vil utføre noen kode hvis enten Ja eller Ok knappene ble klikket, kan du bruke neste kode:
Avsluttende ord: sett er flotte. Sett kan virke forvirrende for a Delphi nybegynner, men så snart du begynner å bruke variabler av setttype, vil du finne ut at de gir mye mer enn det hørtes ut i begynnelsen.