System.Variant

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

type Variant = { built-in type };

C++

class RTL_DELPHIRETURN Variant: public TVarData

Propriétés

Type Visibilité  Source Unité  Parent
type
class
public
System.pas
sysvari.h
System System


Description

Utilisé pour les variables qui peuvent changer de type à l'exécution.

Le type Variant est utilisé pour les variables qui peuvent changer de type à l'exécution. Les variants offrent une plus grande flexibilité que les variables standard mais consomment davantage de mémoire. De plus, les opérations où les variants sont utilisés sont plus lentes que celles portant sur des types associés statiquement. Enfin, les opérations illégales portant sur des variants provoquent fréquemment des erreurs d'exécution, alors que les mêmes erreurs avec des variables normales sont détectées à la compilation. Vous pouvez aussi créer des types de variants personnalisés.

Par défaut, les variables Variant peuvent contenir des valeurs de tout type à l'exception des enregistrements, des ensembles, des tableaux statiques, des classes, des références de classes et des pointeurs. En d'autres termes, les variants peuvent tout contenir sauf les types structurés et les pointeurs. Ils peuvent contenir des interfaces, dont les méthodes et les propriétés sont accessibles grâce à eux. Ils peuvent contenir des tableaux dynamiques et une forme particulière de tableaux statiques appelée tableau variant. Il est possible de mélanger, dans les expressions et les assignations, des variants à d'autres variants et à des valeurs entières, réelles, de type chaîne ou booléennes. Le compilateur effectue automatiquement les conversions de types.

Il n'est pas possible d'indexer les variants contenant des chaînes.

Vous pouvez définir des variants personnalisés qui étendent le type Variant afin de contenir des valeurs arbitraires. Par exemple, vous pouvez définir un type de chaîne Variant qui permet l'indexation ou qui contient une référence de classe, un type enregistrement ou un tableau statique particulier. Les types variant personnalisés sont définis en créant des descendants de la classe TCustomVariantType.

Sur les plates-formes 32 bits, un Variant occupe 16 octets de mémoire. Sur les plates-formes 64 bits, un Variant est un enregistrement de 24 octets. Un enregistrement variant consiste en un code de type et une valeur, ou un pointeur sur une valeur, du type spécifié par le code de type. Voir Représentation interne des types variants. Tous les variants sont initialisés à la création à la valeur spéciale Unassigned. La valeur spéciale Null indique des données inconnues ou manquantes.

Voir aussi

Exemples de code