|
- Type Variant et NULL
- Type d'un variant
- Propriété ..Classe sur les variants
- Sous-éléments nommés
- Sous-éléments indicés
- Imbrications des sous-éléments nommés et indicés
Le type Variant (Type de variable) En anglais : Variant
Le type Variant permet de : - stocker n'importe quelle valeur de type simple : booléen, numérique (Monétaire, Réel, Entier, ...), caractères et chaîne de caractères, date (Date, Heure, DateHeure et Durée), ...
Versions 19 et supérieuresstocker des sous-éléments nommés ou indicés. Nouveauté 19stocker des sous-éléments nommés ou indicés. stocker des sous-éléments nommés ou indicés. Versions 15 et supérieuresstocker n'importe quelle valeur de type complexe : structures, classes, types avancés, tableaux, tableaux associatifs, files, piles et listes. Nouveauté 15stocker n'importe quelle valeur de type complexe : structures, classes, types avancés, tableaux, tableaux associatifs, files, piles et listes. stocker n'importe quelle valeur de type complexe : structures, classes, types avancés, tableaux, tableaux associatifs, files, piles et listes.- manipuler la valeur NULL dans le WLangage.
- stocker des interactions avec les objets ActiveX et la programmation Automation.
Versions 17 et supérieures Nouveauté 17 Versions 18 et supérieures Nouveauté 18 Versions 21 et supérieures Nouveauté 21 Versions 22 et supérieures Nouveauté 22
nValeur est un Variant = 10 nValeur = SAI_Saisie1 nValeur = Client.Nom
Syntaxe
Déclaration et affectation d'un type Variant Masquer les détails
<Nom de la variable> est un Variant = <Valeur> OU
<Nom de la variable> est un Variant <Nom de la variable> = <Valeur>
<Nom de la variable> : Nom de la variable à déclarer. <Valeur> : Valeur à affecter à la variable. Une variable de type variant peut être affectée avec :- n'importe quelle valeur littérale,
- le contenu d'une variable,
- le contenu d'un champ de type simple,
- le contenu d'une rubrique.
Remarques Pour spécifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la constante NULL. Remarques : - pour un type variant, NULL signifie "Pas affecté".
- pour un type numérique, NULL signifie "égal 0".
nVal est un entier SI nVal = Null ALORS ... // le test renvoie Vrai car nVal=0 nVal = 5 SI nVal = Null ALORS ... // le test renvoie Faux car nVal=5
vVal est un Variant SI vVal = Null ALORS ... // renvoie Vrai car le variant n'est pas affecté vVal = 0 SI vVal = Null ALORS ... // renvoie Faux car le variant est affecté // avec un entier de valeur 0 vVal = 5 SI vVal = Null ALORS ... // renvoie Faux car le variant est affecté // avec un entier de valeur 5
vVal est un Variant vVal = Null SI vVal = 0 ALORS ... // renvoie Vrai car une variable non affectée // et une valeur ne sont pas comparables, Vrai est retourné par convention
Il est possible de connaître le type d'un variant grâce à la propriété ..Type. La propriété ..Type permet de connaître le type de la valeur stockée dans la variable. Remarques : - La fonction VariantConvertit permet de convertir le type de la valeur stockée dans une variable de type Variant.
- La fonction TypeVar permet de connaître le type d'une variable (type Variant pour une variable Variant).
vVal est un Variant TypeVar(vVal) // renvoie le numéro du type variant vVal..Type // renvoie le type de la valeur stockée dans le variant
Propriété ..Classe sur les variants La propriété ..Classe sur les variables de type Variant permet d'obtenir le nom de la classe utilisée si le variant correspond à une classe. Versions 19 et supérieuresSous-éléments nommés Il est possible d'utiliser directement et sans déclaration des membres sur une variable de type Variant. Lors d'une affectation d'un membre, si le membre n'existe pas, il est automatiquement créé ; si le membre existe déjà, il est modifié. Exemple :
Personne est un Variant Personne.Nom = "DUPONT" Personne.Prénom = "Michel"
Lors d'une lecture d'un membre, si le membre n'existe pas, il n'est pas créé. Il est possible de tester la présence d'un membre grâce à la propriété ..Existe. Exemple :
Personne est un Variant SI PAS Personne.Nom..Existe ALORS Erreur("Le nom n'a pas été renseigné") FIN
Si le membre n'existe pas, la valeur renvoyée est Null. Pour tester explicitement la valeur Null, plusieurs possibilités : - utiliser la propriété ..Valeur.
Exemple :
Elément est un Variant SI Elément.MembreInexistant..Valeur = Null ALORS ... FIN
Versions 23 et supérieurestester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
Nouveauté 23tester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
tester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
Les sous-éléments nommés peuvent être manipulés grâce aux propriétés suivantes : | | Existe | Renvoie : - Vrai si l'élément existe,
- Faux si l'élément n'existe pas. L'élément n'est pas créé.
| Nom | Nom de l'élément | Type | Type de l'élément (mêmes valeurs que TypeVar). | Valeur | Valeur de l'élément. |
La propriété ..Membre sur les variables de type Variant permet d'obtenir le tableau des éléments nommés. Ce tableau peut être manipulé par POUR TOUT, la propriété ..Occurrence, l'opérateur [ ], ... Il est également possible de supprimer un élément. Exemple :
o est un JSON o.m = 1 o.n = 2 Trace(o) x est un Variant = o Supprime(x..Membre, 1) Trace(x) // Le membre m a été supprimé.
Nouveauté 19Sous-éléments nommés Il est possible d'utiliser directement et sans déclaration des membres sur une variable de type Variant. Lors d'une affectation d'un membre, si le membre n'existe pas, il est automatiquement créé ; si le membre existe déjà, il est modifié. Exemple :
Personne est un Variant Personne.Nom = "DUPONT" Personne.Prénom = "Michel"
Lors d'une lecture d'un membre, si le membre n'existe pas, il n'est pas créé. Il est possible de tester la présence d'un membre grâce à la propriété ..Existe. Exemple :
Personne est un Variant SI PAS Personne.Nom..Existe ALORS Erreur("Le nom n'a pas été renseigné") FIN
Si le membre n'existe pas, la valeur renvoyée est Null. Pour tester explicitement la valeur Null, plusieurs possibilités : - utiliser la propriété ..Valeur.
Exemple :
Elément est un Variant SI Elément.MembreInexistant..Valeur = Null ALORS ... FIN
Versions 23 et supérieurestester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
Nouveauté 23tester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
tester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
Les sous-éléments nommés peuvent être manipulés grâce aux propriétés suivantes : | | Existe | Renvoie : - Vrai si l'élément existe,
- Faux si l'élément n'existe pas. L'élément n'est pas créé.
| Nom | Nom de l'élément | Type | Type de l'élément (mêmes valeurs que TypeVar). | Valeur | Valeur de l'élément. |
La propriété ..Membre sur les variables de type Variant permet d'obtenir le tableau des éléments nommés. Ce tableau peut être manipulé par POUR TOUT, la propriété ..Occurrence, l'opérateur [ ], ... Il est également possible de supprimer un élément. Exemple :
o est un JSON o.m = 1 o.n = 2 Trace(o) x est un Variant = o Supprime(x..Membre, 1) Trace(x) // Le membre m a été supprimé.
Sous-éléments nommés Il est possible d'utiliser directement et sans déclaration des membres sur une variable de type Variant.Lors d'une affectation d'un membre, si le membre n'existe pas, il est automatiquement créé ; si le membre existe déjà, il est modifié. Exemple :
Personne est un Variant Personne.Nom = "DUPONT" Personne.Prénom = "Michel"
Lors d'une lecture d'un membre, si le membre n'existe pas, il n'est pas créé. Il est possible de tester la présence d'un membre grâce à la propriété ..Existe. Exemple :
Personne est un Variant SI PAS Personne.Nom..Existe ALORS Erreur("Le nom n'a pas été renseigné") FIN
Si le membre n'existe pas, la valeur renvoyée est Null. Pour tester explicitement la valeur Null, plusieurs possibilités : - utiliser la propriété ..Valeur.
Exemple :
Elément est un Variant SI Elément.MembreInexistant..Valeur = Null ALORS ... FIN
Versions 23 et supérieurestester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
Nouveauté 23tester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
tester directement la valeur Null (disponible à partir de la version 230042). Exemple : tester directement la valeur Null. Exemple :
Elément est un Variant SI Elément.MembreInexistant = Null ALORS ... FIN
Les sous-éléments nommés peuvent être manipulés grâce aux propriétés suivantes : | | Existe | Renvoie : - Vrai si l'élément existe,
- Faux si l'élément n'existe pas. L'élément n'est pas créé.
| Nom | Nom de l'élément | Type | Type de l'élément (mêmes valeurs que TypeVar). | Valeur | Valeur de l'élément. |
La propriété ..Membre sur les variables de type Variant permet d'obtenir le tableau des éléments nommés. Ce tableau peut être manipulé par POUR TOUT, la propriété ..Occurrence, l'opérateur [ ], ... Il est également possible de supprimer un élément. Exemple :
o est un JSON o.m = 1 o.n = 2 Trace(o) x est un Variant = o Supprime(x..Membre, 1) Trace(x) // Le membre m a été supprimé.
Versions 19 et supérieuresSous-éléments indicés Il est possible d'utiliser directement la variable de type variant comme un tableau de variants. L'utilisation de l'opérateur [ ] crée automatiquement le tableau. Exemple :
Jours est un Variant Jours[1] = "lundi" Jours[2] = "mardi" Jours[3] = "mercredi" Jours[4] = "jeudi" Jours[5] = "vendredi" Jours[6] = "samedi" Jours[7] = "dimanche"
Les opérations des tableaux peuvent être directement effectuées sur la variable de type Variant : POUR TOUT, ..Occurrence, opérateur [ ], ... Nouveauté 19Sous-éléments indicés Il est possible d'utiliser directement la variable de type variant comme un tableau de variants. L'utilisation de l'opérateur [ ] crée automatiquement le tableau. Exemple :
Jours est un Variant Jours[1] = "lundi" Jours[2] = "mardi" Jours[3] = "mercredi" Jours[4] = "jeudi" Jours[5] = "vendredi" Jours[6] = "samedi" Jours[7] = "dimanche"
Les opérations des tableaux peuvent être directement effectuées sur la variable de type Variant : POUR TOUT, ..Occurrence, opérateur [ ], ... Sous-éléments indicés Il est possible d'utiliser directement la variable de type variant comme un tableau de variants. L'utilisation de l'opérateur [ ] crée automatiquement le tableau.Exemple :
Jours est un Variant Jours[1] = "lundi" Jours[2] = "mardi" Jours[3] = "mercredi" Jours[4] = "jeudi" Jours[5] = "vendredi" Jours[6] = "samedi" Jours[7] = "dimanche"
Les opérations des tableaux peuvent être directement effectuées sur la variable de type Variant : POUR TOUT, ..Occurrence, opérateur [ ], ... Versions 19 et supérieuresImbrications des sous-éléments nommés et indicés Les sous-éléments nommés et les sous-éléments indicés étant eux-mêmes de type Variant, il est possible de les imbriquer récursivement. Exemple :
Bibliotheque est un Variant Bibliotheque.Livre[1].Titre = "Les trois mousquetaires" Bibliotheque.Livre[1].Auteur = "Alexandre Dumas" Bibliotheque.Livre[2].Titre = "Les misérables" Bibliotheque.Livre[2].Auteur = "Victor Hugo"
Nouveauté 19Imbrications des sous-éléments nommés et indicés Les sous-éléments nommés et les sous-éléments indicés étant eux-mêmes de type Variant, il est possible de les imbriquer récursivement. Exemple :
Bibliotheque est un Variant Bibliotheque.Livre[1].Titre = "Les trois mousquetaires" Bibliotheque.Livre[1].Auteur = "Alexandre Dumas" Bibliotheque.Livre[2].Titre = "Les misérables" Bibliotheque.Livre[2].Auteur = "Victor Hugo"
Imbrications des sous-éléments nommés et indicés Les sous-éléments nommés et les sous-éléments indicés étant eux-mêmes de type Variant, il est possible de les imbriquer récursivement.Exemple :
Bibliotheque est un Variant Bibliotheque.Livre[1].Titre = "Les trois mousquetaires" Bibliotheque.Livre[1].Auteur = "Alexandre Dumas" Bibliotheque.Livre[2].Titre = "Les misérables" Bibliotheque.Livre[2].Auteur = "Victor Hugo"
Documentation également disponible pour…
|
|
|
| |
| Propriété ..Type d'un variant : Valeurs particulières |
|
| Si le variant n'est pas initialisé, alors il est à Null, et la propriété ..Type retourne la constante wlVide (0) .
Dans le cas d'un variant avec Sous-éléments nommés, la propriété ..Type retourne la constante wlVariantObjet (143).
Dans le cas d'un variant avec Sous-éléments indicés, la propriété ..Type retourne la constante wlVariantTableau (142).
Pour obtenir la liste des valeurs possibles pour la propriété ..Type d'un variant, voir la page de documentation " Type (propriété) ". https://doc.pcsoft.fr/fr-FR/?2510131&name=type_propriete |
|
|
|
| |
| |
| |
|
| Variant avec Sous-éléments nommés : Ajouter un membre par indirection |
|
| Lorsqu'on veut ajouter un membre dont le nom n'est pas connu au moment de la compilation (le nom du membre est donné dans une variable de type chaîne), alors il faut utiliser une indirection. Pour illustrer, on peut compléter l'exemple donné plus haut:
Personne est un Variant Personne.Nom = "DUPONT" Personne.Prénom = "Michel
sNomMembre est une chaîne = "Age" nValeurMembre est un entier= 30 {"Personne."+sNomMembre} = nValeurMembre
:-) |
|
|
|
| |
| |
| |
|
| | Attention, à ce jour, un variant ne peut pas recevoir un tableau de structures. (Windev 24 v01F240075n) |
|
|
|
| |
| |
| |
|
| Propriété ..Classe sur les variants |
|
| La propriété ..Classe sur les variables de type Variant permet d'obtenir le nom de la classe ou de la structure utilisée, si le variant correspond à une classe ou à une structure. |
|
|
|
| |
| |
| |
| |
| |
| |
| | |
| |