Types de données ordinaux et énumérés pour Delphi

Main touchant un écran plein de diverses icônes.

Geralt/Pixabay





de Delphes langage de programmation est un exemple de langage fortement typé. Cela signifie que toutes les variables doivent être d'un certain type. Un type est essentiellement un nom pour un type de données. Lorsque nous déclarons une variable, nous devons spécifier son type, qui détermine l'ensemble de valeurs que la variable peut contenir et les opérations qui peuvent être effectuées dessus.

De nombreux types de données intégrés à Delphi, tels que Integer ou Chaîne de caractères , peuvent être affinés ou combinés pour créer de nouveaux types de données. Dans cet article, nous verrons comment créer des types de données ordinaux personnalisés dans Delphes .



Types ordinaux

Les caractéristiques déterminantes des types de données ordinaux sont les suivantes : ils doivent être constitués d'un nombre fini d'éléments et ils doivent être ordonnés d'une manière ou d'une autre.

Les exemples les plus courants de types de données ordinaux sont tous les types Integer ainsi que Char etbooléentaper. Plus précisément, Object Pascal a 12 types ordinaux prédéfinis : Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool et Char. Il existe également deux autres classes de types ordinaux définis par l'utilisateur : les types énumérés et les types de sous-gamme.



Dans tous les types ordinaux, il doit être logique de reculer ou d'avancer jusqu'à l'élément suivant. Par exemple, les types réels ne sont pas ordinaux car reculer ou avancer n'a pas de sens. La question 'Quel est le prochain réel après 2.5 ?' n'a pas de sens.

Puisque, par définition, chaque valeur sauf la première a un prédécesseur unique et chaque valeur sauf la dernière a un successeur unique, plusieurs valeurs prédéfinies les fonctions sont utilisés lorsque vous travaillez avec des types ordinaux :

Fonction Effet
Ord(X) Donne l'indice de l'élément
Préd(X) Va à l'élément listé avant X dans le type
Suc(X) Va à l'élément listé après X dans le type
Déc(X;n) Recule n éléments (si n est omis, recule d'un élément)
Inc(X;n) Déplace n éléments vers l'avant (si n est omis déplace 1 élément vers l'avant)
Faible(X) Renvoie la valeur la plus basse de la plage du type de données ordinal X
Haut(X) Renvoie la valeur la plus élevée dans la plage du type de données ordinal X


Par exemple, High(Byte) renvoie 255 car la valeur la plus élevée du type Byte est 255, et Succ(2) renvoie 3 car 3 est le successeur de 2.

Remarque : Si nous essayons d'utiliser Succ au dernier élément, Delphi générera unexception d'exécutionsi la vérification de la portée est activée.



Type énumération Delphi

Le moyen le plus simple de créer un nouvel exemple d'un type ordinal consiste simplement à répertorier un groupe d'éléments dans un certain ordre. Les valeurs n'ont pas de signification inhérente et leur ordre suit l'ordre dans lequel les identificateurs sont répertoriés. Autrement dit, une énumération est une liste de valeurs.

|__+_|

Une fois que nous avons défini un type de données énumérées, nous pouvons déclarer des variables comme étant de ce type :



|__+_|

L'objectif principal d'un type de données énuméré est de préciser quelles données votreprogrammeva manipuler. Un type énuméré n'est en réalité qu'un raccourci pour attribuer des valeurs séquentielles à des constantes. Compte tenu de ces déclarations, mardi est une constante de type TWeekDays .

Delphi nous permet de travailler avec les éléments d'un type énuméré à l'aide d'un index qui provient de l'ordre dans lequel ils ont été répertoriés. Dans l'exemple précédent, lundi dans le TWeekDays déclaration de type a l'index 0, mardi a l'index 1, et ainsi de suite. Les fonctions répertoriées dans le tableau précédent nous permettent, par exemple, d'utiliser Succ(Vendredi) pour 'aller à' samedi.



Maintenant, nous pouvons essayer quelque chose comme :

|__+_|

La bibliothèque de composants visuels Delphi utilise des types énumérés à de nombreux endroits. Par exemple, la position d'un formulaire est définie comme suit :



|__+_|

Nous utilisons Position (via l'inspecteur d'objets) pour obtenir ou définir la taille et le placement duformulaire.

Types de sous-gamme

En termes simples, un type de sous-plage représente un sous-ensemble des valeurs d'un autre type ordinal. En général, nous pouvons définir n'importe quelle sous-gamme en commençant par n'importe quel type ordinal (y compris un type énuméré précédemment défini) et en utilisant un double point :

|__+_|

Ici, TWorkDays inclut les valeurs lundi, mardi, mercredi, jeudi et vendredi.

C'est tout — allez maintenant énumérer !