Avis

Comprendre le type Delphi SET

Comprendre le type Delphi SET

Une des caractéristiques du langage Delphi que l’on ne retrouve pas dans les autres langages modernes est la notion d’ensembles.

De Delphi type de set est une collection de valeurs du même type ordinale.

Un ensemble est défini à l'aide du ensemble de mot-clé:

Les types de set sont généralement définis avec des sous-plages.

Dans l'exemple ci-dessus, TMagicNumber est un type de sous-gamme personnalisé permettant aux variables du type TMagicNumber de recevoir des valeurs comprises entre 1 et 34. En d'autres termes, un type de sous-gamme représente un sous-ensemble des valeurs d'un autre type ordinal.

Les valeurs possibles du type d'ensemble sont tous les sous-ensembles du type de base, y compris l'ensemble vide.

Une limite sur les ensembles est qu'ils peuvent contenir jusqu'à 255 éléments.

Dans l'exemple ci-dessus, le type d'ensemble TMagicSet est un ensemble d'éléments TMagicNumber - nombres entiers compris entre 1 et 34.

La déclaration TMagicSet = ensemble de TMagicNumber est égal à la déclaration suivante: TMagicSet = ensemble de 1… 34.

Définir les variables de type

Dans l'exemple ci-dessus, les variables emptyMagicSet, oneMagicSet et un autre MagicSet sont des ensembles de TMagicNumber.

À assigner une valeur Pour définir une variable de type d'ensemble, utilisez les crochets et répertoriez tous les éléments de l'ensemble. Un péché:

Remarque 1: chaque variable de type d'ensemble peut contenir l'ensemble vide, indiqué par.

Remarque 2: l'ordre des éléments dans un ensemble n'a pas de sens et ne signifie pas non plus qu'un élément (valeur) soit inclus deux fois dans un ensemble.

Le mot clé IN

Pour tester si un élément est inclus dans l'ensemble (variable) utilisez le DANS mot-clé:

Définir les opérateurs

De la même manière que vous pouvez additionner deux nombres, vous pouvez avoir un ensemble qui est la somme de deux ensembles. Avec les sets, votre événement a plus d'opérateurs:

  • + renvoie l'union de deux ensembles.
  • - renvoie la différence de deux ensembles.
  • * renvoie l'intersection de deux ensembles.
  • = retourne vrai si deux ensembles sont égaux - ont le même élément.
  • <= renvoie vrai si le premier ensemble est un sous-ensemble du deuxième ensemble.
  • > = renvoie vrai si le premier ensemble est un sur-ensemble du deuxième ensemble.
  • renvoie vrai si deux ensembles ne sont pas identiques.
  • IN renvoie true si un élément est inclus dans l'ensemble.

Voici un exemple:

La procédure ShowMessage sera-t-elle exécutée? Si oui, qu'est-ce qui sera affiché?

Voici l'implémentation de la fonction DisplayElements:

Indice: oui. Affiché: "18 | 24 |".

Entiers, caractères, booléens

Bien sûr, lors de la création de types de set, vous n'êtes pas limité aux valeurs entières. Les types ordinaux Delphi incluent des valeurs de caractère et booléennes.

Pour empêcher les utilisateurs de taper des clés alpha, ajoutez cette ligne dans la touche OnKeyPress d'un contrôle de saisie:

Ensembles avec énumérations

Un scénario couramment utilisé dans le code Delphi consiste à mélanger des types énumérés et des types définis.

Voici un exemple:

Question: le message sera-t-il affiché? Réponse: non :(

Définit dans les propriétés du contrôle Delphi

Lorsque vous devez appliquer "gras" à la police utilisée dans les contrôles TEdit, vous utilisez l'inspecteur d'objets ou le code suivant:

La propriété Style de la police est une propriété de type set! Voici comment cela est défini:

Ainsi, un type énuméré TFontStyle est utilisé comme type de base pour le type d'ensemble TFontStyles. La propriété Style de la classe TFont est de type TFontStyles. Il s'agit donc d'une propriété de type set.

Un autre exemple inclut le résultat de la fonction MessageDlg. Une fonction MessageDlg est utilisée pour afficher une boîte de message et obtenir la réponse de l'utilisateur. L'un des paramètres de la fonction est le paramètre Buttons de type TMsgDlgButtons.

TMsgDlgButtons est défini comme un ensemble de (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Si vous affichez un message à l'utilisateur contenant les boutons Oui, OK et Annuler et que vous souhaitez exécuter du code si les boutons Oui ou Ok ont ​​été cliqués, vous pouvez utiliser le code suivant:

Mot final: les décors sont géniaux. Les ensembles peuvent sembler déroutants pour un débutant de Delphi, mais dès que vous commencerez à utiliser des variables de type d’ensemble, vous découvrirez qu’elles fournissent beaucoup plus qu’elles ne l’entendaient au début.


Voir la vidéo: Delphi 024 RichEdit 08 Set Encoding String (Novembre 2021).