Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v20 R7
Type valeur

Type valeur 


 

Type valeur ( expression ) -> Résultat 
Paramètre Type   Description
expression  Expression in Expression dont la valeur résultante doit être testée
Résultat  Entier long in Numéro du type de données

La commande Type valeur retourne le type de la valeur résultant de l'évaluation de l'expression passée en paramètre.

La commande retourne une valeur numérique qui peut être comparée aux constantes suivantes du thème Types champs et variables :

Constante Type Valeur
_o_Est un float Entier long 35
Est un BLOB Entier long 30
Est un booléen Entier long 6
Est un entier long Entier long 9
Est un null Entier long 255
Est un numérique Entier long 1
Est un objet Entier long 38
Est un pointeur Entier long 23
Est un tableau objet Entier long 39
Est un texte Entier long 2
Est un variant Entier long 12
Est une collection Entier long 42
Est une date Entier long 4
Est une heure Entier long 11
Est une image Entier long 3
Est une variable indéfinie Entier long 5

Cette commande est destinée à retourner le type des expressions scalaires, c'est-à-dire des valeurs stockées dans ou retournées par le paramètre expression. En particulier, elle peut être appliquée aux expressions 4D suivantes :

  • propriétés d'objets (emp.name),
  • éléments de collections (myCol[5]).

Note : Les propriétés d'objets numériques ont toujours le type réel :

 C_OBJET($o)
 $o:=Creer objet("value";42)
 $vType:=Type valeur($o.value) //$vType=Est un réel

Type valeur peut être appliquée à toute expression 4D valide, y compris les champs, les variables ou les paramètres. Dans ce cas, à la différence de la commande Type, Type valeur retourne le type interne de la valeur résultant de l'évaluation de l'expression, et non son type declaré. Comme le langage de 4D convertit certains types de valeurs en interne, le résultat de Type valeur peut différer du type déclaré. Par exemple, 4D convertit en interne les valeurs des champs de type "Entier 64 bits". Vous pouvez obtenir les résultats suivants :

 $vType1:=Type([myTable]Long64field) //$vType=Est un entier 64 bits
 $vType2:=Type valeur([myTable]Long64field) //$vType=Est un numérique (en mode interprété)

D'autres différences relatives aux tableaux (l'évaluation d'un tableau retourne l'indice de l'élément courant) et au mode compilé sont à noter. Le tableau suivant liste ces différences :

Type déclaréRésultat de TypeRésultat de Type valeur (interprété)Résultat de Type valeur (compilé)Commentaire
TABLEAU TEXTE($t;1)Est un tableau texteEst un numériqueEst un entier long$t contient l'indice de l'élément courant, qui est un numérique
Champ AlphaEst un champ alphaEst un texteEst un texte4D manipule en interne toutes les chaînes en texte
Champ EntierEst un entierEst un numériqueEst un entier longPour des raisons d'optimisation, en mode interprété toutes les valeurs numériques sont considérées comme des réels et...
Champ Entier longEst un entier longEst un numériqueEst un entier long... en mode compilé, toutes les valeurs entières sont considérées comme des entiers longs(*)
Champ Entier 64 bitsEst un entier 64 bitsEst un numériqueEst un entier long

(*)Si vous voulez effectuer un test de valeur numérique qui soit valide pour les modes interprété et compilé, vous devez écrire un code du type :

 Si(Type valeur($myValue)=Est un entier long)|(Type valeur($myValue)=Est un réel)

Note de compatibilité : A compter de 4D v16 R6, les dates sont stockées dans les propriétés d'objets soit avec le type date, soit en texte au format date ISO. Pour plus d'informations, reportez-vous à la description du sélecteur Dates dans les objets de la commande FIXER PARAMETRE BASE.

Vous souhaitez gérer les divers types possibles de valeurs d'une propriété d'objet :

 Au cas ou
    :(Type valeur($o.value)=Est un numérique)
  //valeur de type numérique
    :(Type valeur($o.value)=Est un texte)
  //valeur de type texte
    :(Type valeur($o.value)=Est un objet)
  //valeur de type sous-objet
       ...
 Fin de cas

Vous souhaitez obtenir la somme de toutes les valeurs numériques dans une collection :

 C_COLLECTION($col)
 C_REEL($sum)
 $col:=Creer collection("Hello";20;"World2";15;50;Date du jour;Vrai;10)
 Boucle($i;0;$col.length-1) //-1 car les collections débutent à 0
    Si(Type valeur($col[$i])=Est un numérique)
       $sum:=$sum+$col[$i]
    Fin de si
 Fin de boucle
 ALERTE(Chaine($sum)) //95



Voir aussi  

OB Lire type
Type

 
PROPRIÉTÉS 

Produit : 4D
Thème : Langage
Numéro : 1509
Nom intl. : Value type

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v16 R4

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v20 R7)