PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Déclaration de structures
  • Type des membres d'une structure
  • Déclarer un membre de type tableau dans une structure
  • Copie homonymique d'une structure
  • Sérialisation des membres d'une structure
  • Quels types "avancés" peuvent être membre ?
  • Passer une structure en paramètre à une procédure
  • Ajouter le contenu d'une structure dans un tableau de structures sans passer par une variable de cette structure
  • Limites d'une structure
  • Différences entre la version 8 et la version 9
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Une structure est un type de données personnalisé. Une structure regroupe des éléments de types différents.
Remarque : Si vous manipulez des variables personnalisées, il est conseillé de déclarer :
  • un type structure, si plusieurs variables de ce type sont utilisées dans différents traitements du projet.
  • une variable composée, si une seule variable de ce type est utilisée dans votre projet (par exemple utilisation ponctuelle pour passer des paramètres à une API).
Versions 16 et supérieures
Universal Windows 10 App Cette fonctionnalité est disponible pour les applications Windows Phone.
Nouveauté 16
Universal Windows 10 App Cette fonctionnalité est disponible pour les applications Windows Phone.
Universal Windows 10 App Cette fonctionnalité est disponible pour les applications Windows Phone.
Versions 17 et supérieures
iPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Nouveauté 17
iPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
iPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
Universal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
Widget Android Cette fonctionnalité est disponible en mode WidGet Android.
Nouveauté 18
Universal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
Widget Android Cette fonctionnalité est disponible en mode WidGet Android.
Universal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
Widget Android Cette fonctionnalité est disponible en mode WidGet Android.
Versions 20 et supérieures
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
Nouveauté 20
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
Versions 21 et supérieures
Universal Windows 10 App Cette fonctionnalité est désormais disponible en mode Universal Windows 10 App.
Apple Watch Cette fonctionnalité est désormais disponible en mode Apple Watch.
Nouveauté 21
Universal Windows 10 App Cette fonctionnalité est désormais disponible en mode Universal Windows 10 App.
Apple Watch Cette fonctionnalité est désormais disponible en mode Apple Watch.
Universal Windows 10 App Cette fonctionnalité est désormais disponible en mode Universal Windows 10 App.
Apple Watch Cette fonctionnalité est désormais disponible en mode Apple Watch.
Exemple
// Déclarer une structure
RefProduit est une structure
        CodeF est un entier
        CodePr est une chaîne fixe sur 10
FIN
// Déclarer une variable de type structure
RefProduit est une structure
        CodeF est un entier
        CodePr est une chaîne fixe sur 10
FIN
Fauteuil est une RefProduit
// Manipuler un membre d'une variable de type structure
RefProduit est une structure
        CodeF est un entier
        CodePr est une chaîne fixe sur 10
FIN
Fauteuil est une RefProduit
Fauteuil:CodeF = 7
Fauteuil:CodePr = "Meuble"
// Déclarer et initialiser les membres d'une structure
point3D est une Structure
x est un entier
y est un entier
z est un entier
FIN

p1 est un point3D = [0, 0, 50]
Syntaxe

Déclarer une structure Masquer les détails

<Nom de la structure> est une structure
   <Membres de la structure>
FIN
<Nom de la structure> :
Nom de la structure à déclarer
<Membres de la structure> :
Déclarations des variables contenues dans la structure. Ces variables sont appelées les membres de la structure.
Versions 19 et supérieures
Lors de la déclaration des membres de la structure, il est possible d'indiquer les paramètres de sérialisation de ces membres. Pour plus de détails, consultez le paragraphe "Sérialisation des membres d'une structure".
Nouveauté 19
Lors de la déclaration des membres de la structure, il est possible d'indiquer les paramètres de sérialisation de ces membres. Pour plus de détails, consultez le paragraphe "Sérialisation des membres d'une structure".
Lors de la déclaration des membres de la structure, il est possible d'indiquer les paramètres de sérialisation de ces membres. Pour plus de détails, consultez le paragraphe "Sérialisation des membres d'une structure".
<FIN> :
Fin de déclaration des variables.

Déclarer une variable de type structure Masquer les détails

<Nom de la variable> est une <Nom de la structure>
<Nom de la variable> :
Nom de la variable de type structure à déclarer.
<Nom de la structure> :
Nom d'une structure précédemment déclarée.

Manipuler un membre d'une variable de type structure Masquer les détails

<Nom de la variable structure>:<Nom du membre de la structure>
<Nom de la variable structure> :
Nom de la variable structure à manipuler.
<Nom du membre de la structure> :
Nom du membre de la structure à manipuler.
Il est possible d'affecter les membres d'une variable de type structure grâce à l'affectation multiple.
Remarques

Déclaration de structures

Si une structure <Nom de la structure> est déclarée :
  • dans le code du projet, il sera possible de déclarer une variable du type <Nom de la structure> dans l'ensemble du projet.
  • dans le code de déclaration des globales d'une fenêtre, il sera possible de déclarer une variable du type <Nom de la structure> dans cette fenêtre, dans les champs de cette fenêtre et dans les procédures locales associées.
  • dans le code d'ouverture d'un état, il sera possible de déclarer une variable du type <Nom de la structure> dans cet état, dans les champs de cet état et dans les procédures locales associées.
  • dans le code de déclaration d'une classe, il sera possible de déclarer une variable du type <Nom de la structure> dans cette classe et dans les méthodes de cette classe. Attention : il est nécessaire de placer "Est une structure" avant le "est une classe".
  • dans un traitement, il sera possible de déclarer une variable du type <Nom de la structure> dans ce traitement.
JavaPHP La structure doit être déclarée dans un traitement de déclaration des globales (d'une fenêtre, d'une page ou d'une collection de procédures).
Versions 20 et supérieures
WEBDEV - Code ServeurWEBDEV - Code Navigateur Remarques :
  • Une variable de type structure peut être déclarée en code navigateur à partir d'une structure déclarée en code serveur ou en code navigateur.
  • Si une variable de type structure est déclarée en code navigateur à partir d'une structure déclarée en code serveur, la structure serveur doit être composée de type simples : chaîne, entier, réel, booléen, date et heure.
Nouveauté 20
WEBDEV - Code ServeurWEBDEV - Code Navigateur Remarques :
  • Une variable de type structure peut être déclarée en code navigateur à partir d'une structure déclarée en code serveur ou en code navigateur.
  • Si une variable de type structure est déclarée en code navigateur à partir d'une structure déclarée en code serveur, la structure serveur doit être composée de type simples : chaîne, entier, réel, booléen, date et heure.
WEBDEV - Code ServeurWEBDEV - Code Navigateur Remarques :
  • Une variable de type structure peut être déclarée en code navigateur à partir d'une structure déclarée en code serveur ou en code navigateur.
  • Si une variable de type structure est déclarée en code navigateur à partir d'une structure déclarée en code serveur, la structure serveur doit être composée de type simples : chaîne, entier, réel, booléen, date et heure.

Type des membres d'une structure

Les membres d'une structure peuvent être de type :
Tous les autres types de données (variable composée, constante, ...) sont interdits.
Versions 20 et supérieures
WEBDEV - Code Navigateur Une structure déclarée en code navigateur doit être composée de type simples : chaîne, entier, réel, booléen, date et heure.
Nouveauté 20
WEBDEV - Code Navigateur Une structure déclarée en code navigateur doit être composée de type simples : chaîne, entier, réel, booléen, date et heure.
WEBDEV - Code Navigateur Une structure déclarée en code navigateur doit être composée de type simples : chaîne, entier, réel, booléen, date et heure.

Déclarer un membre de type tableau dans une structure

  • Déclarer un membre de type tableau simple :
    Les dimensions du tableau sont fixées dès la déclaration. Il est possible de modifier les dimensions du tableau avec la fonction Dimension.
  • Déclarer un membre de type tableau dynamique :
    Il est nécessaire de définir les dimensions du tableau (c'est-à-dire d'allouer le tableau) avant d'utiliser le tableau. Par exemple :
    // Déclaration d'une structure
    Struct est une structure
            x1 est un entier
            x2 est un tableau dynamique // Déclaration du tableau
    FIN

    // Déclaration d'une variable de type structure
    MaStruct est une Struct

    // Allocation du tableau
    MaStruct:x2 = allouer un tableau dynamique de 4,7 entiers
    // Utilisation du tableau
    MaStruct:x2[1,1] = 25

Copie homonymique d'une structure

L'opérateur => permet de réaliser une copie homonymique d'une variable de type structure.
Versions 22 et supérieures
Cette copie homonymique est également réalisée en utilisant l'opérateur =.
Nouveauté 22
Cette copie homonymique est également réalisée en utilisant l'opérateur =.
Cette copie homonymique est également réalisée en utilisant l'opérateur =.
Attention, la copie s'effectue membre à membre : seuls les membres de même nom seront copiés. Les membres de noms différents ou inexistants seront ignorés.
Exemple :
// Déclaration d'une structure
StructClientImport est une Structure
Nom est une chaîne
Prénom est une chaîne
Société est une chaîne
Adresse est une chaîne
CP est une chaîne
Ville est une chaîne
FIN

StructClientInterne est une Structure
Nom est une chaîne
Prénom est une chaîne
Société est une chaîne
Adresse est une chaîne
AdresseComp est une chaîne
CP est une chaîne
Ville est une chaîne
Pays est une chaîne
FIN


NouveauClient est un StructClientImport

ClientEnCours est un StructClientInterne

ClientEnCours = NouveauClient // les membres AdresseComp, Pays se seront pas renseignés
Versions 19 et supérieures

Sérialisation des membres d'une structure

Par défaut, tous les membres d'une structure sont sérialisés.
Il est possible de gérer précisément la sérialisation de chaque membre d'une structure :
  • en indiquant quel membre sera sérialisé lors de l'appel à la fonction Sérialise.
    Cette opération est possible sur tous les types de sérialisation (WXML, JSON, binaire).
  • en changeant le nom du membre lors de la sérialisation par la fonction Sérialise.
    Cette opération n'est pas possible lors d'une sérialisation binaire.
Cette gestion de la sérialisation est réalisée en utilisant la syntaxe suivante :
  • Sérialisation ou non d'un membre :
    <Nom du membre> est un <Type du membre> [, Sérialise = <Vrai / Faux>]
  • Sérialisation et changement du nom d'un membre :
    <Nom du membre> est un <Type du membre> [, Sérialise = <Nouveau nom>]
Exemple :
Cl est une Structure
// Membre sérialisé
MembreSérialisé est un entier
// Membre non sérialisé
MembreNonSérialisé est une chaîne, Sérialise = Faux  
// Membre renommé lors de la sérialisation
MembreRenommé est un entier, Sérialise = "NouveauNomMembre"
FIN
Nouveauté 19

Sérialisation des membres d'une structure

Par défaut, tous les membres d'une structure sont sérialisés.
Il est possible de gérer précisément la sérialisation de chaque membre d'une structure :
  • en indiquant quel membre sera sérialisé lors de l'appel à la fonction Sérialise.
    Cette opération est possible sur tous les types de sérialisation (WXML, JSON, binaire).
  • en changeant le nom du membre lors de la sérialisation par la fonction Sérialise.
    Cette opération n'est pas possible lors d'une sérialisation binaire.
Cette gestion de la sérialisation est réalisée en utilisant la syntaxe suivante :
  • Sérialisation ou non d'un membre :
    <Nom du membre> est un <Type du membre> [, Sérialise = <Vrai / Faux>]
  • Sérialisation et changement du nom d'un membre :
    <Nom du membre> est un <Type du membre> [, Sérialise = <Nouveau nom>]
Exemple :
Cl est une Structure
// Membre sérialisé
MembreSérialisé est un entier
// Membre non sérialisé
MembreNonSérialisé est une chaîne, Sérialise = Faux  
// Membre renommé lors de la sérialisation
MembreRenommé est un entier, Sérialise = "NouveauNomMembre"
FIN

Sérialisation des membres d'une structure

Par défaut, tous les membres d'une structure sont sérialisés.
Il est possible de gérer précisément la sérialisation de chaque membre d'une structure :
  • en indiquant quel membre sera sérialisé lors de l'appel à la fonction Sérialise.
    Cette opération est possible sur tous les types de sérialisation (WXML, JSON, binaire).
  • en changeant le nom du membre lors de la sérialisation par la fonction Sérialise.
    Cette opération n'est pas possible lors d'une sérialisation binaire.
Cette gestion de la sérialisation est réalisée en utilisant la syntaxe suivante :
  • Sérialisation ou non d'un membre :
    <Nom du membre> est un <Type du membre> [, Sérialise = <Vrai / Faux>]
  • Sérialisation et changement du nom d'un membre :
    <Nom du membre> est un <Type du membre> [, Sérialise = <Nouveau nom>]
Exemple :
Cl est une Structure
// Membre sérialisé
MembreSérialisé est un entier
// Membre non sérialisé
MembreNonSérialisé est une chaîne, Sérialise = Faux  
// Membre renommé lors de la sérialisation
MembreRenommé est un entier, Sérialise = "NouveauNomMembre"
FIN

Quels types "avancés" peuvent être membre ?

Une variable "avancée" peut être membre d'une variable "avancée". Le tableau ci-dessous présente les différentes combinaisons :
Variable composéeStructureClasseTableau
Variable composéeNonNonNonNon
StructureOuiOuiOuiOui
ClasseOuiOuiOuiOui
TableauOuiOuiOuiNon

Passer une structure en paramètre à une procédure

Une variable de type "structure" peut être passée en paramètre à une procédure. Pour cela, utilisez la syntaxe suivante :
<Nom de la procédure>(<Nom de la variable de type structure>)
Par exemple :
RefProduit est une structure
        CodeF est un entier
        CodePr est une chaîne fixe sur 10
FIN
Fauteuil est une RefProduit

// Appel de la procédure AfficheProduit
AfficheProduit(Fauteuil)

Ajouter le contenu d'une structure dans un tableau de structures sans passer par une variable de cette structure

Si vous utilisez un tableau de structures avec peu de membres, il peut être plus simple d'ajouter directement une structure en utilisant l'opérateur [ ] (crochet). Par exemple, pour la structure suivante :
// Structure pour mémoriser une lettre et son code ASCII
STTouche est une Structure
sTouche est une chaîne
nCodeAscii est un entier
FIN
// Tableau de structures
tabTouches est un tableau de STTouche
L'ajout se fait généralement en passant par une variable du type de la structure :
// Structure temporaire pour l'ajout
stUneTouche est un STTouche
// Mémorise la lettre A
stUneTouche.sTouche = "A"
stUneTouche.nCodeAscii = Asc("A")
tabTouches.Ajoute(stUneTouche)
Avec l'opérateur [ ], vous pouvez gagner en visibilité :
// Mémorise la lettre A
tabTouches.Ajoute(["A", Asc("A")])

Limites d'une structure

  • L'héritage de structure est interdit : une structure ne peut pas hériter d'une autre structure.
  • Il n'est pas possible de restreindre l'accès à un membre d'une structure : tous les membres d'une structure sont publics.
WINDEVWEBDEV - Code ServeurWindows MobileJava

Différences entre la version 8 et la version 9

Une structure contenant un membre de type caractère n'a pas le même comportement que dans les versions précédentes. En effet, les caractères occupaient 1 octet en version 8 et 2 octets en version 9.
Il est conseillé d'utiliser le type "Entier sur un octet" pour assurer un bon fonctionnement.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire