Declaration de tableau

Signaler
Messages postés
63
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
25 novembre 2005
-
Messages postés
63
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
25 novembre 2005
-
bonjour,

je souhaite utiliser un tableau pour recueillir des données.
Le problème est que je ne connais pas le nombre de données et leur type.
J'utilise donc un tableau déclaré en variant, mais comment le déclarer si on ne connais pas sa capacité?
Variant tab[?]={?};
je dois faire comment?

merci d'avance.

4 réponses

Messages postés
16
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
19 novembre 2006

Pour utiliser un tableau de capacite inconnu lors de la compil il faut
que tu utilise une allocation dynamique: pour cela tu dois avoir recour
aux pointeurs



ex: une fonction qui cree un tableau de int :



void func(int size)

{

//declaration du pointeur

int* tab;



....du code...



//allocation dynamique

tab = new[size]



....encore du code....



//supprime tab si on n'en a plus besoin.

delete tab []

}



Noublie surtout pas d'appeler 'delete' sinon la memoire allouee serat
perdu pour le systeme jusq'au prochain reboot. Ca s'appelle une
fuite memoire (memory leak pour les english)



Si tu ne connait pas le type maintenant tu devras utiliser les 'template'.



Le mieux c'est que tu fasse une petite recherche sur 'pointeurs' et 'template' ca m'etonerait que tu ne trouve rien :)
Messages postés
63
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
25 novembre 2005
1
En fait, pour être plus clair:

je stock dans une variable de type Variant des données venant d'un autre logiciel. Ces données sont mis dans la dite variable grace à une fonction intégré au logiciel: "GetAttributes"
le code est le suivant:
vAttributs=vBlockReference.OleFunction("GetAttributes");

Un certain nombre de données (nommées "Attributs") soient mis dans ma variable vAttributs.

Par la suite, je souhaite m'occuper de chaque attribut, mais comment faire? En effet, ces données étant mis dans UNE variable, je ne peux pas procéder comme dans un tableau.

merci!


Messages postés
16
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
19 novembre 2006

Hum ca me parait pas encore tres clair...

Voila ce que je comprends:

Tu recuperes un bloc de donnees "vAttributs" contenant en fait 'n' objets de type "variant",
Tu veux ensuite traiter chaque objets separement.

Si tu peux obtenir la taille de ton type "variant" (avec sizeof(Variant)), tu peux connaitre le nombre d'elements de vAttributs par:

n = sizeof(vAttributs)/sizeof(Variant)

Ensuite l'element 'j' est stocke a l'adresse: "vAttribut[j]" = (&vAttribut + j*sizeof(Variant))

pour le recuperer tu as donc besoin de lire 'sizeof(Variant)' bytes a partir de cette adresse...

Sans la taille 'sizeof(Variant)' je ne vois pas trop ce que tu pourrais faire.....
Messages postés
63
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
25 novembre 2005
1
Excuses moi, mais pourrais-tu m'expliquer un peu plus ce que je dois faire? Je ne saisis pas complètement.