Beoordelingen

Delphi SET Type begrijpen

Delphi SET Type begrijpen

Een van de Delphi-taalfuncties die niet in andere moderne talen wordt gevonden, is het begrip sets.

Delphi's type instellen is een verzameling waarden van hetzelfde rangtelwoord.

Een set wordt gedefinieerd met behulp van 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 vertegenwoordigt een subbereiktype 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 settype TMagicSet 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.

Stel type variabelen in

In het bovenstaande voorbeeld de variabelen emptyMagicSet, oneMagicSet en anotherMagicSet zijn sets van TMagicNumber.

Naar waarde toewijzen naar een settype variabele, gebruik de vierkante haakjes en maak een lijst van alle elementen van de set. Als in:

Opmerking 1: elke settype variabele kan de lege set bevatten, aangegeven met.

Opmerking 2: de volgorde van de elementen in een set heeft geen betekenis, noch is het zinvol om een ​​element (waarde) twee keer in een set op te nemen.

Het IN-trefwoord

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

Stel operators in

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

  • + geeft de unie van twee sets terug.
  • - geeft het verschil van twee sets terug.
  • * geeft het snijpunt van twee sets terug.
  • = retourneer true als twee sets gelijk zijn - hetzelfde element hebben.
  • <= geeft waar terug als de eerste set een subset van de tweede set is.
  • > = geeft waar terug als de eerste set een superset van de tweede set is.
  • geeft 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 |".

Gehele getallen, tekens, Booleans

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

Om te voorkomen dat gebruikers alfatoetsen typen, voegt u deze regel toe aan de OnKeyPress van een bewerkingsbesturingselement:

Sets met opsommingen

Een veel gebruikt scenario in Delphi-code is om zowel de opgesomde typen als de settypen te combineren.

Hier is een voorbeeld:

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

Stelt in Delphi Control Properties in

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 Style van het lettertype is een eigenschap van het settype! Hier is hoe het wordt gedefinieerd:

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

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

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

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

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


Bekijk de video: Het werkgeheugen van het menselijk brein (December 2020).