4D v14.3

Type

Accueil

 
4D v14.3
Type

Type 


 

Type ( champVar ) -> Résultat 
Paramètre Type   Description
champVar  Champ, Variable in Champ ou variable à tester
Résultat  Entier long in Numéro du type de données

Type retourne une valeur numérique qui indique le type du champ ou de la variable que vous avez passé(e) dans le paramètre champVar.

4D fournit les constantes prédéfinies suivantes :

Constante Type Valeur
Est un BLOB Entier long 30
Est un booléen Entier long 6
Est un champ alpha Entier long 0
Est un entier Entier long 8
Est un entier 64 bits Entier long 25
Est un entier long Entier long 9
Est un float Entier long 35
Est un null JSON 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 2D Entier long 13
Est un tableau booléen Entier long 22
Est un tableau chaîne Entier long 21
Est un tableau date Entier long 17
Est un tableau entier Entier long 15
Est un tableau entierlong Entier long 16
Est un tableau image Entier long 19
Est un tableau numérique Entier long 14
Est un tableau objet Entier long 39
Est un tableau pointeur Entier long 20
Est un tableau texte Entier long 18
Est un texte Entier long 2
Est une date Entier long 4
Est une heure Entier long 11
Est une image Entier long 3
Est une sous table Entier long 7
Est une variable chaîne Entier long 24
Est une variable indéfinie Entier long 5

Notes :

  • Type retourne 9 (Est un entier long) lorsqu'elle est appliquée à une variable de type Graphe.
  • A compter de la version 11 de 4D, Type retourne le véritable type d'un tableau lorsqu'elle est appliquée à une "ligne" d'un tableau 2D, et non plus Est un tableau 2D (cf. exemple 4).
  • A compter de la version 11 de 4D, Type retourne le type Est un texte ou Est un tableau texte lorsqu'elle est appliquée respectivement à une variable Alpha ou un tableau Alpha (à compter de cette version, il n'y a pas de différence entre une variable Alpha et Texte).

Vous pouvez appliquer la fonction Type aux champs, variables interprocess, variables process, variables locales et à des pointeurs dépointés qui référencent ces types d'objets. Vous pouvez appliquer Type aux paramètres ($1,$2..., ${...}) d'une méthode projet ou au résultat d'une fonction ($0).

Référez-vous à l'exemple de la commande AJOUTER DONNEES AU CONTENEUR.

Référez-vous à l'exemple de la commande PROPRIETES GLISSER DEPOSER.

La méthode projet suivante efface une partie ou la totalité des champs de l'enregistrement courant de la table vers laquelle pointe le pointeur passé en paramètre, et ce, sans supprimer l'enregistrement ou changer d'enregistrement courant :

  ` Méthode projet VIDER ENREGISTREMENT
  ` VIDER ENREGISTREMENT ( Pointeur {; Entier long } )
  ` VIDER ENREGISTREMENT ( -> [Table] { ; Type des valeurs } )
 
 C_POINTEUR($1)
 C_ENTIER LONG($2;$vlTypeVal)
 
 Si(Nombre de paramètres>=2)
    $vlTypeVal:=$2
 Sinon
    $vlTypeVal:=0xFFFFFFFF
 Fin de si
 Boucle($vlChamp;1;Nombre de champs($1))
    $vpChamp:=Champ(Table($1);$vlChamp)
    $vlTypeChamp:=Type($vpChamp->)
    Si($vlTypeVal ??$vlTypeChamp )
       Au cas ou
          :(($vlTypeChamp=Est un champ alpha)|($vlTypeChamp=Est un texte))
             $vpChamp->:=""
          :(($vlTypeChamp=Est un numérique)|($vlTypeChamp=Est un entier)|($vlTypeChamp=Est un entier long))
             $vpChamp->:=0
          :($vlTypeChamp=Est une date)
             $vpChamp->:=!00/00/00!
          :($vlTypeChamp=Est une heure)
             $vpChamp->:=?00:00:00?
          :($vlTypeChamp=Est un booléen)
             $vpChamp->:=Faux
          :($vlTypeChamp=Est une image)
             C_IMAGE($vgImageVide)
             $vpChamp->:=$vgImageVide
          :($vlTypeChamp=Est une sous table)
             Repeter
                TOUS LES SOUS ENREGISTREMENTS($vpChamp->)
                SUPPRIMER SOUS ENREGISTREMENT($vpChamp->)
             Jusque(Sous enregistrements trouves($vpChamp->)=0)
          :($vlTypeChamp=Est un BLOB)
             FIXER TAILLE BLOB($vpChamp->;0)
       Fin de cas
    Fin de si
 Fin de boucle

Une fois cette méthode projet implémentée dans votre base, vous pouvez écrire :

  ` Effacer la totalité du contenu de l'enregistrement courant de la table [Choses à faire]
 VIDER ENREGISTREMENT(->[Choses à faire])
 
  ` Effacer les champs de type Texte, BLOB et Image de l'enregistrement courant de la table [Choses à faire]
 VIDER ENREGISTREMENT(->[Choses à faire];0?+Est un texte?+Est un BLOB?+Est une image)
 
  ` Effacer la totalité de l'enregistrement courant de la table [Choses à faire] sauf les champs Alpha
 VIDER ENREGISTREMENT(->[Choses à faire];-1?-Est un champ alpha)

Dans certains cas, par exemple pour écrire du code générique, il peut être nécessaire de savoir si un tableau est tableau standard indépendant ou une “ligne” d’un tableau 2D. Dans ce cas, il suffit d’utiliser le code suivant :

 ptrmonTab:=->monTab{6} ` monTab{6} est-il une ligne d’un tableau 2D ?
 RESOUDRE POINTEUR(ptrmonTab;nomVar;numTable;numChamp)
 Si(nomVar#"")
    $ptr:=Pointeur vers(nomVar)
    $letype:=Type($ptr->)
  ` Si monTab{6} est une ligne de tableau 2D, $letype vaut 13
 Fin de si

 
PROPRIÉTÉS 

Produit : 4D
Thème : Langage
Numéro : 295
Nom intl. : Type

 
HISTORIQUE 

Modifié : 4D v11 SQL

 
VOIR AUSSI  

Est une variable
Indefinie

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v12.4)
4D - Langage ( 4D v11 SQL Release 6)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)