Structures
DescriptionStructure <nom> [Extends <name>] ... EndStructure
Structure est utile pour définir un type utilisateur et accéder à des zones mémoires du système d'exploitation par exemple. Les structures peuvent être utilisées pour rendre l'accès à des grands fichiers plus facilement. Cela peut être plus efficace dans la mesure où vous pouvez regrouper dans un même objet des informations communes. On accède aux structures avec le caractère \ . Les structures peuvent s'imbriquer. Les tableaux statiques sont acceptés dans une structure.
Le paramètre optionnel Extends permet d'étendre une structure existante avec de nouveaux champs. Tous les champs se trouvant dans la structure étendue se retrouveront en tête de la nouvelle structure. C'est très utile pour faire un héritage simple de structures.
- SizeOf permet de connaître la taille en octets d'une structure - OffsetOf peut être utilisé pour rechercher l'index du champ indiqué.
Note : Un tableau statique dans une structure ne se comporte pas de la même façon qu'un tableau défini avec la commande Dim. Ceci pour être conforme au format de structures en C/C++ (pour permettre un portage direct des structures de l'API). Ce qui signifie que a[2] assignera un tableau de 0 à 1 (deux éléments) alors que Dim a(2) assignera un tableau de 0 à 2 (trois éléments).
Quand beaucoup de champs doivent être remplis en une fois, il est conseillé d'utiliser With : EndWith pour réduire la quantité de code à saisir et améliorer sa lisibilité.
Il est possible de copier une structure complète en utilisant l'opérateur égal entre deux éléments de même type.
ClearStructure peut être utilisé pour vider une zone de mémoire structurée. Uniquement pour les programmeurs confirmés, lorsque les pointeurs sont de la partie.
Exemple:
Structure Personne Nom.s Prenom.s Age.w EndStructure Dim MesAmis.Personne(100) ; Ici la position '0' du tableau MesAmis() ; contiendra une personne et ses informations personnelles MesAmis(0)\Nom = "Durand" MesAmis(0)\Prenom = "Michel" MesAmis(0)\Age = 32Exemple: Structure plus complexe (Tableau statique imbriqué)
Structure Fenetre *FenetreSuivante.Fenetre ; Pointe vers un autre objet fenêtre x.w y.w Nom.s[10] ; 10 noms possibles EndStructureExemple: Structure étendue
Structure MyPoint x.l y.l EndStructure Structure MyColoredPoint Extends MyPoint color.l EndStructure ColoredPoint.MyColoredPoint\x = 10 ColoredPoint.MyColoredPoint\y = 20 ColoredPoint.MyColoredPoint\color = RGB(255, 0, 0)Exemple: Copie de structure
Structure MyPoint x.l y.l EndStructure LeftPoint.MyPoint\x = 10 LeftPoint\y = 20 RightPoint.MyPoint = LeftPoint Debug RightPoint\x Debug RightPoint\y
DescriptionStructureUnion Field1.Type Field2.Type ... EndStructureUnion
StructureUnion est prévu pour les programmeurs avancés qui souhaitent économiser de la mémoire en partageant certains champs à l'intérieur d'une même structure. Il s'agit d'un équivalent du mot clef 'union' en C/C++.
Note: Chaque champ dans la déclaration StructureUnion peut être d'un type différent.Exemple:
Structure Type Name$ StructureUnion Long.l ; Chaque champ (Long, Float et String) est placé à la Float.f ; meme adresse mémoire. String.s ; EndStructureUnion EndStructure