A propos des types de données (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Types de données, variables et constantes - Index

Cette rubrique propose une présentation générale des types de données Delphi.

Un type est essentiellement le nom d'une sorte de données. Quand vous déclarez une variable, il faut spécifier son type qui détermine l'ensemble des valeurs que la variable peut contenir et les opérations qui peuvent être effectuées. Chaque expression renvoie des données d'un type particulier tout comme les fonctions. La plupart des fonctions et des procédures nécessitent des paramètres ayant un type spécifique.

Le langage Delphi est un langage "fortement typé" : cela signifie qu'il distingue un grand nombre de types de données et ne permet pas toujours de substituer un type de données à un autre. C'est généralement un avantage, car cela permet au compilateur de traiter les données intelligemment et de vérifier plus précisément votre code, ce qui évite des erreurs d'exécution difficiles à diagnostiquer. Toutefois, si vous avez besoin d'une plus grande flexibilité, il est possible de contourner la vérification stricte des types. Les solutions possibles sont le transtypage, les pointeurs, les variants, les parties variables dans les enregistrements, et l'adressage absolu des variables.

Il y a plusieurs manières de catégoriser les types de données de Delphi :

  • Certains types sont prédéfinis (ou intégrés) ; le compilateur les reconnaît automatiquement sans nécessiter une déclaration. La plupart des types décrits dans cette présentation du langage sont des types prédéfinis. D'autres types sont créés à l'aide de déclarations ; c'est le cas des types définis par l'utilisateur et de ceux définis dans les bibliothèques du produit.
  • Les types peuvent être classifiés comme fondamentaux ou généraux. L'étendue et le format d'un type fondamental sont les mêmes dans toutes les implémentations du langage Delphi, indépendamment du CPU utilisé ou du système d'exploitation. L'étendue et le format d'un type général sont spécifiques à une plate-forme et peuvent varier selon les implémentations. La plupart des types prédéfinis sont fondamentaux mais certains types d'entiers, de caractères, de chaînes et de pointeurs sont généraux. Il est préférable d'utiliser, dans la mesure du possible, les types généraux car ils permettent des performances optimales et la portabilité du code. Cependant, la modification du format de stockage selon l'implémentation d'un type général peut poser des problèmes de compatibilité, par exemple si vous placez dans un fichier un contenu en tant que données binaires brutes sans information de type et de version.
  • Les types peuvent aussi être classifiés selon les catégories suivantes : simple, chaîne, structuré, pointeur, procédure ou variant. De plus, les identificateurs de type même peuvent être considérés comme appartenant à un "type" particulier car ils sont transmis comme paramètres dans certaines fonctions (par exemple High, Low et SizeOf).
  • Les types peuvent également être paramétrés ou génériques. Les types peuvent être génériques dans le sens où ils sont la base d'une structure ou d'une procédure qui opère de concert avec différents types déterminés par la suite. Pour plus d'informations sur les types paramétrés ou génériques, voir la rubrique Génériques - Index.

Le schéma suivant décrit la taxonomie des types de données Delphi :

  • simple
    • ordinal
      • integer
      • character
      • Boolean
      • enumerated
      • subrange
    • real
  • string
  • structured
    • set
    • array
    • record
    • file
    • class
    • class reference
    • interface
  • pointer
  • procedural
  • Variant
  • type identifier

La fonction standard SizeOf opère sur toutes les variables et tous les identificateurs de type. Elle renvoie un entier représentant la quantité de mémoire (en octets) nécessaire pour stocker les données du type spécifié. Par exemple :

  • Sur les plates-formes 32 bits ou Windows 64 bits SizeOf(LongInt) renvoie 4, car une variable LongInt utilise quatre octets de mémoire.
  • Sur iOS 64 bits SizeOf(LongInt) renvoie 8, car une variable LongInt utilise huit octets de mémoire.

Les déclarations de type sont décrites dans les rubriques suivantes. Pour des informations générales sur la déclaration de type, voir Types de données, variables et constantes - Index (Delphi).

Voir aussi