Delphi SET Type begrijpen

click fraud protection

Een van de Delphi-taal functies die niet in andere moderne talen worden gevonden, is het begrip sets.

Delphi'stype instellen is een verzameling waarden van hetzelfde ordinaal type.

Een set wordt gedefinieerd met de set van trefwoord:

Settypen worden meestal gedefinieerd met subbereiken.

In het bovenstaande voorbeeld is het TMagicNumber een aangepast subbereiktype waarmee variabelen van het TMagicNumber-type waarden van 1 tot 34 kunnen ontvangen. Simpel gezegd, een subbereiktype vertegenwoordigt een subset van de waarden in een ander ordinaal type.

Mogelijke waarden van het settype zijn alle subsets van het basistype, inclusief de lege set.

Een beperking voor sets is dat ze maximaal 255 elementen kunnen bevatten.

In het bovenstaande voorbeeld is het TMagicSet-settype een set TMagicNumber-elementen - gehele getallen van 1 tot 34.

De verklaring TMagicSet = set van TMagicNumber is gelijk aan de volgende verklaring: TMagicSet = set van 1..34.

Type variabelen instellen

In het bovenstaande voorbeeld zijn de variabelen emptyMagicSet, oneMagicSet en een andere MagicSet zijn sets van TMagicNumber.

instagram viewer

Naar wijs een waarde toe gebruik voor een settype-variabele de vierkante haken en som alle elementen van de set op. Als in:

Opmerking 1: elke variabele van het type set kan de lege set bevatten, aangegeven met [].

Opmerking 2: de volgorde van de elementen in een set heeft geen betekenis en het is ook niet zinvol dat een element (waarde) tweemaal in een set wordt opgenomen.

Het IN-trefwoord

Om te testen of een element inbegrepen in de set (variabel) gebruik de IN trefwoord:

Operators instellen

Op dezelfde manier als u twee getallen kunt optellen, kunt u een set hebben die de som is van twee sets. Met sets heeft uw evenement meer operators:

  • + geeft de combinatie van twee sets terug.
  • - geeft het verschil van twee sets terug.
  • * geeft het snijpunt van twee sets terug.
  • = retourneert true als twee sets gelijk zijn - hetzelfde element hebben.
  • <= retourneert true als de eerste set een subset is van de tweede set.
  • > = retourneert true als de eerste set een superset is van de tweede set.
  • <> retourneert true als twee sets niet identiek zijn.
  • IN retourneert true als een element in de set is opgenomen.

Hier is een voorbeeld:

Wordt de ShowMessage-procedure uitgevoerd? Zo ja, wat wordt er weergegeven?

Hier is de implementatie van de functie DisplayElements:

Hint: ja. Weergegeven: "18 | 24 |".

Integers, personages, Booleans

Bij het maken van settypen bent u natuurlijk niet beperkt tot gehele waarden. Delphi ordinale typen omvatten karakter- en booleaanse waarden.

Om te voorkomen dat gebruikers alfa-sleutels typen, voegt u deze regel toe aan de OnKeyPress van een bewerkingsbesturing:

Sets met opsommingen

Een veelgebruikt scenario in Delphi-code is het combineren van zowel opgesomde typen als settypen.

Hier is een voorbeeld:

Vraag: wordt het bericht weergegeven? Antwoord: nee :(

Sets in Delphi Control Properties

Wanneer u "vet" moet toepassen op het lettertype dat wordt gebruikt in TEdit-besturingselementen, gebruikt u de Object Inspector of de volgende code:

De eigenschap Font's Style is een eigenschap van het ingestelde type! Hier is hoe het wordt gedefinieerd:

Dus een opgesomd type TFontStyle wordt gebruikt als basistype voor het ingestelde type TFontStyles. De eigenschap Style van de klasse TFont is van het type TFontStyles - dus een eigenschap van het settype.

Een ander voorbeeld is het resultaat van de MessageDlg-functie. Een MessageDlg-functie wordt gebruikt om een ​​berichtvenster te openen en het antwoord van de gebruiker te verkrijgen. Een van de parameters van de functie is de parameter Buttons van het type TMsgDlgButtons.

TMsgDlgButtons wordt gedefinieerd als een set van (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Als u een bericht aan de gebruiker weergeeft met de knoppen Ja, OK en Annuleren en u wilt een code uitvoeren als u op de knoppen Ja of Ok hebt geklikt, kunt u de volgende code gebruiken:

Laatste woord: sets zijn geweldig. Sets lijken misschien verwarrend voor a Delphi-beginner, maar zodra je set type variabelen gaat gebruiken zul je ontdekken dat ze veel meer bieden dan het in het begin klonk.

instagram story viewer