|
- 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
Structure (Type de variable) En anglais : Structure (Type of variable)
// 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érieuresLors 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é 19Lors 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. 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.
Versions 20 et supérieures Nouveauté 20Type 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 Nouveauté 20Dé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érieuresCette copie homonymique est également réalisée en utilisant l'opérateur =. Nouveauté 22Cette 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érieuresSé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é 19Sé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ée | Structure | Classe | Tableau |
---|
Variable composée | Non | Non | Non | Non | Structure | Oui | Oui | Oui | Oui | Classe | Oui | Oui | Oui | Oui | Tableau | Oui | Oui | Oui | Non |
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.
|
|
|
| |
| | Attention : les structures deviennent PUBLIC lors de la compilation Java du projet. Il ne faut donc pas avoir le même nom de structure dans deux fenêtres.
(erreur java duplicate class lors de la compilation Android) |
|
|
|
| |
| |
| |
| |
| |
| |
| | |
| |