Forståelse af Delphi SET Type

En af de Delphi-sprog funktioner, der ikke findes på andre moderne sprog, er forestillingen om sæt.

Delphissæt type er en samling af værdier af det samme ordinal type.

Et sæt defineres ved hjælp af sæt af nøgleordet:

Sættyper defineres normalt med subranges.

I ovenstående eksempel er TMagicNumber en brugerdefineret subrange-type, der tillader variabler af TMagicNumber-typen at modtage værdier fra 1 til 34. Kort sagt repræsenterer en subrange-type en undergruppe af værdierne i en anden ordinær type.

Mulige værdier for den indstillede type er alle undergrupper af basetypen, inklusive det tomme sæt.

En begrænsning af sæt er, at de kan rumme op til 255 elementer.

I ovenstående eksempel er typen TMagicSet-sæt et sæt TMagicNumber-elementer - heltal fra 1 til 34.

Erklæringen TMagicSet = sæt med TMagicNumber er lig med følgende erklæring: TMagicSet = sæt af 1..34.

Indstil typevariabler

I ovenstående eksempel variablerne emptyMagicSet, oneMagicSet og anotherMagicSet er sæt TMagicNumber.

Til tildele en værdi

instagram viewer
til en sættypevariabel, brug de firkantede parenteser og angiv alle elementets elementer. Som i:

Bemærk 1: Hver variabel af typen af ​​typen kan indeholde det tomme sæt, betegnet med [].

Bemærk 2: rækkefølgen af ​​elementerne i et sæt har ingen betydning, og det er heller ikke meningsfuldt for et element (værdi) at blive inkluderet to gange i et sæt.

IN-nøgleordet

At teste om et element er inkluderet i sættet (variabel) skal du bruge I nøgleordet:

Indstil operatører

På samme måde som du kan summere to numre, kan du have et sæt, der er summen af ​​to sæt. Med sæt har din begivenhed flere operatører:

  • + returnerer foreningen af ​​to sæt.
  • - returnerer forskellen på to sæt.
  • * returnerer krydset mellem to sæt.
  • = return true, hvis to sæt er ens - har det samme element.
  • <= returnerer sandt, hvis det første sæt er en delmængde af det andet sæt.
  • > = returnerer sandt, hvis det første sæt er et supersæt i det andet sæt.
  • <> returnerer sandt, hvis to sæt ikke er identiske.
  • IN returnerer sandt, hvis et element er inkluderet i sættet.

Her er et eksempel:

Vil ShowMessage-proceduren blive udført? I bekræftende fald, hvad vises der?

Her er implementeringen af ​​DisplayElements-funktionen:

Tip: ja. Vises: "18 | 24 |".

Heltal, karakterer, bolere

Når du opretter sættyper, er du selvfølgelig ikke begrænset til heltalværdier. Delphi ordinaltyper inkluderer karakter og boolske værdier.

For at forhindre brugere i at skrive alfataster, skal du tilføje denne linje i OnKeyPress af en redigeringskontrol:

Sæt med optællinger

Et ofte anvendt scenario i Delphi-kode er at blande både optællede typer og sættyper.

Her er et eksempel:

Spørgsmål: vises meddelelsen? Svar: nej :(

Sætter i Delphi Control egenskaber

Når du skal anvende "fed" på den skrifttype, der bruges i TEdit-kontroller, bruger du enten Objektinspektøren eller følgende kode:

Font's Style-egenskaben er en fast ejendom! Sådan defineres det:

Så en opregnet type TFontStyle bruges som basistype for den indstillede type TFontStyles. Style-egenskaben i TFont-klassen er af typen TFontStyles - derfor en fast type-egenskab.

Et andet eksempel inkluderer resultatet af MessageDlg-funktionen. En MessageDlg-funktion bruges til at få vist en meddelelsesboks og få brugerens svar. En af parametrene for funktionen er knapperne-parameteren af ​​typen TMsgDlgButtons.

TMsgDlgButtons er defineret som et sæt af (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Hvis du viser en meddelelse til brugeren, der indeholder Ja, OK og Annuller knapper, og du vil udføre nogle kode, hvis der enten blev klikket på Ja eller Ok knapperne, kan du bruge den næste kode:

Sidste ord: sæt er store. Sæt kan forekomme forvirrende for a Delphi begynder, men så snart du begynder at bruge sættypevariabler, vil du finde ud af, at de giver meget mere, end det lød i starten.