Declaration de tableau

speeddo Messages postés 63 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 25 novembre 2005 - 2 mai 2005 à 09:07
speeddo Messages postés 63 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 25 novembre 2005 - 4 mai 2005 à 08:44
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

cancooler Messages postés 16 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 19 novembre 2006
2 mai 2005 à 10:52
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 :)
0
speeddo Messages postés 63 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 25 novembre 2005 1
3 mai 2005 à 09:01
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!


0
cancooler Messages postés 16 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 19 novembre 2006
4 mai 2005 à 04:17
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.....
0
speeddo Messages postés 63 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 25 novembre 2005 1
4 mai 2005 à 08:44
Excuses moi, mais pourrais-tu m'expliquer un peu plus ce que je dois faire? Je ne saisis pas complètement.

0
Rejoignez-nous