Le premier site francophone dédié au développement Pocket PC


Comment simuler des structures avec eVB
t


Une grosse lacune de eVB : Pas de structures

Lorsqu'on connait un peu Visual Basic, on sait qu'il est possible de créer des structures de données qui simplifient bien la vie quand on veut assembler des données sous une même entité. On peut avec VB créer par exemple une structure "Client" qui sera composée du "Code" du client, de son "Nom", son "Prenom" et un "CodeIndex" quelconque :

Type Client
 Code As String
 Nom As String
 Prenom As String
 CodeIndex As Integer
End Type

On peut alors créer autant de variables de type client que l'on veut et y manipuler les données membres très simplement :

Dim LeClient As Client


LeClient.Code = "C1"
LeClient.Nom = "Sibué"
LeClient.Prenom = "Stéphane"
LeClient.CodeIndex = 5432

Seulement avec eVB, pas de "Type", et donc pas facile de structurer (sans jeu de mot) les données.

Pour une fois les variants vont un peu nous aider

Avec eVB, toutes les variables sont des variants. Perso je n'aime pas bien ça, même avec Visual Basic pour PC j'évite d'utiliser ce type de variables. Mais dans le cas qui nous occupe aujourd'hui nous allons profiter de quelques avantages de ces petites bêtes.

Si nous reprenons notre structure "Client" de tout à l'heure, on peut facilement la transformer en tableau :

Code VB classique

Code eVB de substitution

Dim LeClient As Client

LeClient.Code = "C1"
LeClient.Nom = "Sibué"
LeClient.Prenom = "Stéphane"
LeClient.CodeInde = 5422

Dim LeClient As Variant

LeClient = Array("C1","Sibué","Stéphane",5422)

On se retrouve avec une seule variable, de type tableau de variant, dont chaque élément contient une valeur du membre correspondant de la structure.

Pour résumer on accède à chaque membre de notre pseudo structure en indiquant l'index qui lui correspond. Pour éviter de se perdre dans les numéro d'index nous devons mettre en place des constantes qui vont nous simplifier la vie :

Const CLIENT_CODE = 0
Const CLIENT_NOM = 1
Const CLIENT_PRENOM = 2
Const CLIENT_CODEINDEX = 3


Dim LeClient As Variant
Dim LeNom As String


Rem Création de notre pseudo structure Client
LeClient = Array("C1", "Sibué", "Stéphane", 5422)

Rem On récupère le nom de notre client
LeNom = LeClient(CLIENT_NOM)

Bien sûr il faut être vigilant car eVB ne va pas vérifier pour nous qu'on utilise le bon n° d'index. Mais avec ce système, il est possible de créer des stuctures plus complexes.

Voici une structure qui comporte une autre structure (en VB classique) :

Rem Structure VB plus complexe


Type Adresse
 Ligne1 As String
 Ligne2 As Strint
CodePostal As String Ville As String End Type Type Client Code As String Nom As String Prenom As String CodeIndex As Integer Addr As Adresse End Type Dim LeClient As Client LeClient.Code = "C1" LeClient.Nom = "Sibué" LeClient.Prenom = "Stéphane" LeClient.CodeIndex = 5422 LeClient.Addr.Ligne1 = "Chemin de Tavelle" LeClient.Addr.Ligne2 = "Voie A" LeClient.Addr.CodePostal = "73000" LeClient.Addr.Ville = "Chambéry"

Et voilà comment on peut implémenter çà avec notre pseudo structure :

Const ADRESSE_LIGNE1 = 0
Const ADRESSE_LIGNE2 = 1
Const ADRESSE_CPOS = 2
Const ADRESSE_VILLE = 3

Const CLIENT_CODE = 0
Const CLIENT_NOM = 1
Const CLIENT_PRENOM = 2
Const CLIENT_CODEINDEX = 3
Const CLIENT_ADRESSE = 4

Dim LeClient As Variant
Dim wAdresse As Variant

wAdresse = Array("Chemin de Tavelle","Voie A","73000","Chambéry")
wClient = Array("C1","Sibué","Stéphane",5422,wAdresse)

Rem On va récupérer le code postal du client
Dim wCodePostal As String

wCodePostal = LeClient(CLIENT_ADRESSE)(ADRESSE_CPOS)

Conclusion

Voilà, avec un peu d'habitude on peut utiliser cette technique pour structurer les données, bien sûr ça ne résout pas le problème de l'habsence de structures pour l'utilisation de certaines API mais ça simplifie bien la vie tout de même.

N'oubliez pas que les forums sont à votre disposition si vous rencontrez des problèmes avec cet article.

 

Stéphane Sibué

   
 
 
Copyright 2001-2004 - Tous droits réservés
 

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.