DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Déclaration des variables
  • Présentation
  • Comment déclarer une variable ?
  • Déclarer une variable
  • Déclarer une variable et l'initialiser
  • Déclarer plusieurs variables
  • Détail des syntaxes
  • Exemples
  • Associer une section critique à une variable
  • Comment accéder aux propriétés d'une variable ?
  • Syntaxes
  • Exemple
  • Règle de portée des variables
  • Règle
  • Exception
  • Cas particulier : Logiciel Etats & Requêtes
  • Conflit de nom : utilisation ambiguë d'un type
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Une variable se définit par son nom et par son type.
Le type de la variable détermine les valeurs que la variable peut prendre, son encombrement mémoire et les opérations possibles.
Rappel : Chaque type est identifié par un mot-clé du WLangage. Ces mots-clés sont des mots réservés.
Cette page d'aide présente :
Pour simplifier la déclaration des variables, il est également possible d'utiliser l'inférence de type.
Comment déclarer une variable ?

Déclarer une variable

<Nom de la variable> est un(e) <Type>

Déclarer une variable et l'initialiser

<Nom de la variable> est un(e) <Type> = <Valeur initiale>

Déclarer plusieurs variables

<Nom de la variable 1>, <Nom de la variable 2> sont des <Type>

Détail des syntaxes

<Nom de la variable> :Nom de la variable à déclarer.
<Type> :Type de la variable ou type commun aux variables déclarées (voir Types de variables disponibles).
<Valeur initiale> : Valeur initiale de la variable (optionnel). Cette valeur initiale dépend du type de la variable.
Remarques :
  • Les mots-clés un, une et des ne sont pas obligatoires : ce sont des mots d'agrément.
  • Lorsque plusieurs variables du même type sont déclarées et initialisées sur la même ligne, seule la dernière variable est initialisée.
    Pour déclarer et initialiser plusieurs variables en même temps, utilisez l'initialisation multiple.
  • Dans un traitement, il est interdit d'utiliser plusieurs variables de même nom (quel que soit le type de ces variables).
  • L'attribut "utile" peut être utilisé lors de la déclaration d'une variable pour indiquer que la variable est utilisée dans le projet. Cette notation permet notamment d'éviter le warning indiquant qu'une variable locale est inutilisée. Dans ce cas, la syntaxe à utiliser est la suivante :
    <Nom de la variable> est un(e) <Type>, utile [ = "Raison"]

    <Nom de la variable> est un(e) <Type> <utile [ = "Raison"]>
    "Raison" sert de note au développeur.
    Exemple :
    n1 est un entier, utile = "Variable nécessaire pour le Webservice" 

    n2 est un entier <utile = "Variable nécessaire pour le Webservice">
  • Nouveauté 2024
    L'attribut "immuable" peut être utilisé lors de la déclaration d'une variable pour indiquer que la variable est immuable, c'est-à-dire que sa valeur ne changera pas une fois assignée. A la différence d'une constante, une valeur immuable peut être définie par le résultat d'une procédure/fonction. La syntaxe à utiliser est la suivante :
    <Nom de la variable> est un(e) <Type> = <Valeur>, immuable

    <Nom de la variable> est un(e) <Type> <immuable> = <Valeur>
    où Valeur correspond à la valeur obligatoire de la variable.
    Exemple :
    n1 est un entier = 5, immuable

    n2 est un entier <immuable> = 6

    Remarque : L'attribut "immuable" est disponible uniquement pour les variables de type simple (chaîne, numérique, booléen et membre immuable).

Exemples

  • Déclaration de variables simples :
    NomClient est une chaîne
    Compteur est un entier
    Prix est un réel
    i,j,k sont des entiers

    L'inférence de type permet d'utiliser les syntaxes suivantes :
    soit Montant = 1500.69 // type réel
    soit Ville = "Montpellier" // type chaîne
  • Déclaration d'une variable de type Cadre :
    MonCadre est un Cadre
Déclarer plusieurs variables et les initialiser
<Nom de la variable 1>, <Nom de la variable 2>, ..., <Nom de la variable N> sont <Type>
= (<Valeur initiale 1>, <Valeur initiale 2>, ..., <Valeur initiale M>)
Détail de la syntaxe
<Nom de la variable> :Nom de la variable à déclarer.
N représente le nombre de variables déclarées.
<Type> :Type commun aux variables déclarées (voir Types de variables disponibles).
<Valeur initiale> : Valeur initiale de chaque variable.
M représente le nombre de valeurs à affecter.
Remarques :
  • Les affectations sont effectuées de gauche à droite.
  • Si il y a moins de variables que de valeurs (N inférieur à M), une erreur de compilation sera générée.
  • Si il y a plus de variables que de valeurs (N supérieur ou égal à M), seules les premières variables seront affectées.
  • Il est également possible d'affecter plusieurs variables avec des valeurs différentes en une seule ligne de code. Pour plus de détails, consultez Affectation multiple.
Exemples :
x, y, z sont des entiers = (1, 10, 4)
// x vaut 1, y vaut 10, z vaut 4

s, t, p sont des chaînes = ("A", "B001")
// s vaut "A", t vaut "B001", p vaut ""

Associer une section critique à une variable

Lors de la déclaration d'une variable, il est possible d'associer cette variable à une section critique en utilisant l'attribut section critique.
La syntaxe est la suivante :
NomVariable est un TypeVariable <section critique>

ou

NomVariable est un TypeVariable, section critique
Les portions de code qui manipulent ces variables doivent ensuite être encadrées par les fonctions SectionCritiqueDébut et SectionCritiqueFin.
Cas particulier : Une section critique est automatiquement associée aux variables sur lesquelles des opérations simples sont effectuées, telles que :
  • affectation d'une valeur.
  • récupération d'une valeur.
  • incrémentation, décrémentation (opérateurs +, -, ++, --, +=, -=).
Exemple :
// Déclarations globales de la fenêtre FEN_STAT
gmoSomme est un monétaire, section critique
gmoMax est un monétaire, section critique
...
// Code exécuté par plusieurs threads
moMontantCommande est un monétaire 
...
// opération atomique, la section critique est gérée automatiquement par le WLangage
gmoSomme += moMontantCommande

// opération multiple, il est nécessaire de mettre en place la section critique explicitement
using SectionCritique(gmoMax) DANS
SI moMontantCommande > gmoMax ALORS
gmoMax = moMontantCommande
FIN
FIN

Remarques :
  • L'attribut section critique est autorisé sur :
    • les variables globales de projet, collection de procédures, fenêtre, page et état.
    • les variables locales.
    • les membres de classes.
    • les tableaux : dans ce cas, l'attribut est associé au tableau et pas aux éléments du tableau.
  • Les files et les piles sont nativement protégées : l'attribut section critique n'est pas nécessaire.
AndroidWidget Android Non disponible en Android et en Widget Android.
Comment accéder aux propriétés d'une variable ?

Syntaxes

Si le type de variable possède des propriétés, il est possible d'utiliser les syntaxes suivantes :
  • Affectation d'une propriété de la variable :
    <Nom de la variable>.<Propriété> = <Valeur>
  • Lecture d'une propriété de la variable :
    <Nom de la variable>.<Propriété>

Exemple

Utilisation de propriétés sur un type Cadre :
// Définition des caractéristiques du cadre
MonCadre est un Cadre
MonCadre.Couleur = RougeClair
MonCadre.Epaisseur = 5
Règle de portée des variables

Règle

La règle de portée des variables est la suivante :
  • Si une variable "globale" au projet et une variable "globale" à une fenêtre portent le même nom :
    • la variable "globale" à la fenêtre sera utilisée dans tous les événements ou traitements de la fenêtre et de ses champs, ainsi que dans les procédures "locales" de la fenêtre.
    • la variable "globale" au projet sera utilisée dans tous les autres traitements.
  • Si une variable "globale" au projet et une variable "locale" à un traitement portent le même nom :
    • la variable "locale" sera uniquement utilisée dans le traitement dans lequel cette variable a été déclarée.
    • la variable "globale" au projet sera utilisée dans tous les autres traitements.
  • Si une variable "globale" à une fenêtre et une variable "locale" à un traitement de cette fenêtre portent le même nom :
    • la variable "locale" sera uniquement utilisée dans le traitement dans lequel cette variable a été déclarée.
    • la variable "globale" à la fenêtre sera utilisée dans tous les autres événements ou traitements de la fenêtre et de ses champs (y compris les procédures "locales" de la fenêtre).
    • aucune des deux variables ne pourra être utilisée dans le reste du projet.
Remarque : Les variables sont propres à l'exécutable, le Webservice ou la session WEBDEV dans laquelle elles ont été déclarées.
Option de compilation
Une option de compilation permet de gérer la portée des variables locales : Portée des variables locales limitée au bloc courant.
Si cette option est sélectionnée, les variables locales sont localisées au bloc. Il n'est pas possible d'utiliser une variable locale à l'extérieur du bloc dans lequel elle est déclarée. La terminaison de la variable est exécutée à la fin du bloc (destructeurs et libération mémoire).
Il est possible de redéclarer une variable de même nom dans deux sous-blocs distincts mais il n'est pas possible de redéclarer une variable de même nom dans un sous-bloc fils.
Cette option est sélectionnée par défaut pour les nouveaux projets.
Pour modifier cette option :
  1. Affichez la fenêtre de description du projet : sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
  2. Dans l'onglet "Compilation", cochez ou décochez l'option "Portée des variables locales limitée au bloc courant".

Exception

La règle de portée des variables ne s'applique ni sur les constantes ni sur les variables de type source de données.

Cas particulier : Logiciel Etats & Requêtes

  • Les variables globales au projet sont utilisables dans les états et les requêtes créées / modifiées avec le logiciel "Etats & Requêtes".
  • Les rubriques pour lesquelles l'option "Visible par l'utilisateur final dans le logiciel "États et Requêtes"" est cochée sous l'éditeur d'analyses sont utilisables sous le logiciel "Etats et requêtes". Si cette option n'est pas cochée, la rubrique est utilisable uniquement par indirection (l'utilisateur ne dispose pas de la complétion, la rubrique n'est pas disponible dans les assistants, les fenêtres de description, etc.).

Conflit de nom : utilisation ambiguë d'un type

Un type du WLangage peut avoir le même nom qu'un autre type ajouté au projet par un élément importé (classes d'assemblages .NET, types structurés de Webservices, etc.). Dans ce cas, pour forcer l'utilisation du type WLangage lors de la déclaration d'une variable, il faut préfixer le type avec WL.
Exemple :
// Force l'utilisation du type XMLDocument du WLangage
// si le type XMLDocument existe par ailleurs
MaVariable est un WL.XMLDocument
Version minimum requise
  • Version 14
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 05/03/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale