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

Delphi 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 une sorte 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 y être effectuées.

De nombreux types de données intégrés de Delphi, tels que Integer ou Chaîne, peut être affiné ou combiné 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 qui définissent les types de données ordinaux sont: elles doivent être constituées d'un nombre fini d'éléments et elles doivent être ordonnées d'une manière ou d'une autre.

Les exemples les plus courants de types de données ordinaux sont tous les types Entier ainsi que Char et Booléen type. Plus précisément, Object Pascal a 12 types ordinaux prédéfinis: Entier, 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-plage.

instagram viewer

Dans tous les types ordinaux, il doit être logique de reculer ou d'avancer vers l'élément suivant. Par exemple, les types réels ne sont pas ordinaux car avancer ou reculer 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 prédéfinies les fonctions sont utilisés lorsque vous travaillez avec des types ordinaux:

Une fonction Effet
Ord (X) Donne l'index de l'élément
Pred (X) Va à l'élément répertorié avant X dans le type
Succ (X) Va à l'élément répertorié après X dans le type
Dec (X; n) Recule de n éléments (si n est omis recule de 1 é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 ordinales X
Élevé (X) Renvoie la valeur la plus élevée de la plage du type de données ordinales X


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

Remarque: Si nous essayons d'utiliser Succ quand au dernier élément Delphi générera un exception d'exécution si la vérification de portée est activée.

Type énuméré Delphi

La façon la plus simple de créer un nouvel exemple de 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 ordinalité suit la séquence dans laquelle les identificateurs sont répertoriés. En d'autres termes, une énumération est une liste de valeurs.

type TWeekDays = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);

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

var SomeDay: TWeekDays;

Le but principal d'un type de données énuméré est de préciser quelles données votre programme va manipuler. Un type énuméré n'est en réalité qu'une manière abrégée d'affecter des valeurs séquentielles aux constantes. Compte tenu de ces déclarations, mardi est une constante de type TWeekDays.

Delphi nous permet de travailler avec les éléments dans 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 TWeekDays la déclaration de type a l'index 0, mardi l'index 1, etc. Les fonctions répertoriées dans le tableau précédent permettent, par exemple, d'utiliser Succ (vendredi) pour "aller à" samedi.

Maintenant, nous pouvons essayer quelque chose comme:

pour SomeDay: = lundi à dimanche fairesi SomeDay = mardi ensuite
ShowMessage ('Mardi c'est!');

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:

TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);

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

Types de sous-gamme

Autrement dit, un type de sous-gamme représente un sous-ensemble des valeurs dans 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:

type TWorkDays = lundi.. Vendredi;

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

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

instagram story viewer