|
|
|
|
- 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)
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).
// 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.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.
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. 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. 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
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.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|