Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Type valeur
|
Type valeur ( expression ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
expression | Expression |
![]() |
Expression dont la valeur résultante doit être testée | |||||
Résultat | Entier long |
![]() |
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 :
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 Type | Résultat de Type valeur (interprété) | Résultat de Type valeur (compilé) | Commentaire |
TABLEAU TEXTE($t;1) | Est un tableau texte | Est un numérique | Est un entier long | $t contient l'indice de l'élément courant, qui est un numérique |
Champ Alpha | Est un champ alpha | Est un texte | Est un texte | 4D manipule en interne toutes les chaînes en texte |
Champ Entier | Est un entier | Est un numérique | Est un entier long | Pour des raisons d'optimisation, en mode interprété toutes les valeurs numériques sont considérées comme des réels et... |
Champ Entier long | Est un entier long | Est un numérique | Est un entier long | ... en mode compilé, toutes les valeurs entières sont considérées comme des entiers longs(*) |
Champ Entier 64 bits | Est un entier 64 bits | Est un numérique | Est 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
Produit : 4D
Thème : Langage
Numéro :
1509
Nom intl. : Value type
Créé : 4D v16 R4
4D - Langage ( 4D v20 R7)