Variant/fr

From Free Pascal wiki

Deutsch (de) English (en) español (es) français (fr)

Occupation en mémoire :

  • en compilation 32 Bit : 16 octets soit 128 Bit
  • en compilation 64 Bit : 24 octets soit 192 Bit

Propriété : Le type de donnée Variant offre une grande flexibilité dans la programmation. Cependant, il requiert plus de mémoire que les champs de donnée/variables ordinaires. Le type de donnée Variant peut, à l'exception des types structurés, stocker tout type de donnée. Les opérations sur les types Variant sont considérablement plus lentes qu'avec les champs de données typés statiquement.

Deux exemples de fonctions dans l'unité Variants:

  • La fonction VarType() vérifie le type du contenu d'une variable de type de données Variant.
  • La fonction VarToStr() convertit le contenu d'une variable de type de données Variant en chaîne de caractères.

Définition d'un champ de donnée de Variant :

var
  v: Variant;

Définition des champs de donnée pour les exemples :

var
  v: Variant;
  s: String;
  i: Integer;

Exemple 1 :

  // Affectation de valeur
  v := 1;

  // Exemple de casting / affectation de type / conversion de type :
  // Conversion de type de données explicite
  s := VarToStr(v);
  s := AnsiString(v);
  i := Integer(v);
  // Conversion de type de données implicite
  i := v;

Exemple 2 :

  // Affectation de valeur
  v := 'Tomate';

  // Exemple de casting / affectation de type / conversion de type :
  // Conversion de type de données explicite
  s := VarToStr(v);
  s := AnsiString(v);

Exemple 3 :

 // Exemple de détermination du type du contenu d'un champ de données de type variant :
 Case varType(v) of
    varEmpty:
        ShowMessage('Vide');
    varNull:
        ShowMessage('Null');
    varSingle:
        ShowMessage('Type de donnée : Single');
    varDouble:
        ShowMessage('Type de donnée : Double');
    varDecimal:
        ShowMessage('Type de donnée : Decimal');
    varCurrency:
        ShowMessage('Type de donnée : Currency');
    varDate:
        ShowMessage('Type de donnée : Date');
    varOleStr:
        ShowMessage('Type de donnée : UnicodeString');
    varStrArg:
        ShowMessage('Type de donnée : COM-compatible string');
    varString:
        ShowMessage('Type de donnée : Pointeur sur une chaîne à extension dynamique');
    varDispatch:
        ShowMessage('Type de donnée : Pointeur sur un objet d''automation');
    varBoolean:
        ShowMessage('Type de donnée : Wordbool');
    varVariant:
        ShowMessage('Type de donnée : Variant');
    varUnknown:
        ShowMessage('Type de donnée : Inconnu');
    varShortInt:
        ShowMessage('Type de donnée : ShortInt');
    varSmallint:
        ShowMessage('Type de donnée : Smallint');
    varInteger:
        ShowMessage('Type de donnée : Integer');
    varInt64:
        ShowMessage('Type de donnée : Int64');
    varByte:
        ShowMessage('Type de donnée : Byte');
    varWord:
        ShowMessage('Type de donnée : Word');
    varLongWord:
        ShowMessage('Type de donnée : LongWord');
    varQWord:
        ShowMessage('Type de donnée : QWord');
    varError:
        ShowMessage('Erreur du système d''exploitation');
 else
   ShowMessage('Autre type ou état des donnée');
 end;