Förstå Delphi SET Type

En av Delphi-språk funktioner som inte finns på andra moderna språk är uppfattningen om uppsättningar.

Delphisuppsättningstyp är en samling värderingar av samma ordinal typ.

En uppsättning definieras med hjälp av uppsättning av nyckelord:

Ställtyper definieras vanligtvis med subranges.

I exemplet ovan är TMagicNumber en anpassad subrange-typ som gör att variabler av typen TMagicNumber kan ta emot värden från 1 till 34. Enkelt uttryckt representerar en subrange-typ en delmängd av värdena i en annan ordinär typ.

Möjliga värden för den inställda typen är alla delmängder av bastypen, inklusive den tomma uppsättningen.

En begränsning för uppsättningar är att de kan rymma upp till 255 element.

I exemplet ovan är TMagicSet-uppsättningstypen en uppsättning av TMagicNumber-element - heltal från 1 till 34.

Förklaringen TMagicSet = uppsättning av TMagicNumber är lika med följande deklaration: TMagicSet = uppsättning av 1..34.

Ange typvariabler

I exemplet ovan variablerna emptyMagicSet, oneMagicSet och anotherMagicSet är uppsättningar av TMagicNumber.

instagram viewer

Till tilldela ett värde till en variabel av typen, använd fyrkantiga parenteser och list upp alla element i uppsättningen. Som i:

Anmärkning 1: Varje settypvariabel kan innehålla den tomma uppsättningen, betecknad [].

Obs 2: ordningen på elementen i en uppsättning har ingen mening, och det är inte heller meningsfullt att ett element (värde) ska inkluderas två gånger i en uppsättning.

IN-nyckelordet

För att testa om ett element ingår i uppsättningen (variabel) använder du I nyckelord:

Ställ in operatörer

På samma sätt som du kan summera två siffror, kan du ha en uppsättning som är summan av två uppsättningar. Med uppsättningar har ditt evenemang fler operatörer:

  • + returnerar föreningen mellan två uppsättningar.
  • - returnerar skillnaden mellan två uppsättningar.
  • * returnerar skärningspunkten mellan två uppsättningar.
  • = return true om två uppsättningar är lika - har samma element.
  • <= returnerar sant om den första uppsättningen är en delmängd av den andra uppsättningen.
  • > = returnerar sant om den första uppsättningen är en superset för den andra uppsättningen.
  • <> returnerar sant om två uppsättningar inte är identiska.
  • IN returnerar true om ett element ingår i uppsättningen.

Här är ett exempel:

Kommer ShowMessage-proceduren att köras? Om så är fallet, vad kommer att visas?

Här är implementeringen av DisplayElements-funktionen:

Tips: ja. Visas: "18 | 24 |".

Heltal, karaktärer, booléer

Naturligtvis är du inte begränsad till heltal när du skapar inställda typer. Delphi ordinaltyper inkluderar tecken och booleska värden.

Lägg till den här raden i. För att förhindra att användare skriver alfaknappar OnKeyPress av en redigeringskontroll:

Uppsättningar med nummer

Ett vanligt använt scenario i Delphi-koden är att blanda både uppräknade typer och uppsättningstyper.

Här är ett exempel:

Fråga: kommer meddelandet att visas? Svar: nej :(

Ställer in Delphi Control Properties

När du behöver använda "fet" på det teckensnitt som används i TEdit-kontroller använder du antingen Objektinspektören eller följande kod:

Egenskapen Font's Style är en fast egendom! Så här definieras det:

Så, en uppräknat typ TFontStyle används som bastyp för den inställda typen TFontStyles. Stilegenskapen i klassen TFont är av typen TFontStyles - därför en fastighetstypegenskap.

Ett annat exempel inkluderar resultatet av MessageDlg-funktionen. En MessageDlg-funktion används för att få upp en meddelanderuta och få användarens svar. En av funktionens parametrar är knapparna-parametern av typen TMsgDlgButtons.

TMsgDlg-knappar definieras som en uppsättning (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Om du visar ett meddelande till användaren som innehåller Ja, OK och Avbryt knappar och du vill köra någon kod om du klickade på Ja eller Ok kan du använda nästa kod:

Sista ordet: uppsättningarna är bra. Uppsättningar kan verka förvirrande för a Delphi nybörjare, men så fort du börjar använda inställda variabler kommer du att få reda på att de ger mycket mer än det låter i början.

instagram story viewer