[C++Builder] Tableau d'images

Tableau d'images [C++Builder] - C++ - Programmation

Marsh Posté le 17-04-2002 à 12:43:10    

j'aimerais utiliser un tableau d'images (de classe TImage) pour pouvoir en créer de façon dynamique et les insérer dans ce meme tableau...
Pour se faire, j'utilise le code suivant:
 
//déclarations globales
TImage ** tImg;
int cptImg;
 
//dans le constructeur de la Form
tImg=new TImage*;
cptImg=0;
 
//dans la fonction de création et d'insertion
tImg[cptImg++]=new TImage(this);
tImg[cptImg]->Picture->LoadFromFile("c:\\img\
img.jpg" );
tImg[cptImg]->Parent=Form1;
tImg[cptImg]->Left=100+cptLeft;
tImg[cptImg]->Top=100+cptTop;
 
//dans la fonction de fin d'exécution
int cpt;
for (cpt=0; cpt < cptImg; cpt++)
    delete(tImg[cpt]);
 
//dans la fonction de sortie du programme
delete(tImg);
 
Seulement lorsque je quitte le prog, il plante et me fé une erreur d'adresse mémoire, ki doit vraisemblablement dûe à une mauvaise manip au nivo du tableau d'images...
 
Klk1 a-t-il des solutions afin de mieux utiliser un tableau d'images créées dynamiquement...?
 
MERCI D'AVANCE

Reply

Marsh Posté le 17-04-2002 à 12:43:10   

Reply

Marsh Posté le 17-04-2002 à 12:57:14    

Ce qui me chagrine est l'indice
cptImg=0;
 
//dans la fonction de création et d'insertion
tImg[cptImg++]=new TImage(this);
tImg[cptImg]->Picture->LoadFromFile("c:\\img\img.jpg" );
 
Le "new" a lieu sur l'indice cptImg 0, cptImg est incrémenté par [cptImg++], puis on se sert de cptImg nouveau pour le Load...
 
Pourquoi ne pas faire
tImg[cptImg]=new TImage(this);  
tImg[cptImg]->Picture->LoadFromFile("c:\\img\
img.jpg" );  
tImg[cptImg]->Parent=Form1;  
tImg[cptImg]->Left=100+cptLeft;  
tImg[cptImg]->Top=100+cptTop;  
cptImg++;
 
Ca permet au moins d'être sur de ne pas deleter un objet pour lequel il n'y a pas eu de new de fait (=> valeur aléatoire, qq fois stratégique (j'ai réussi à faire planter mon compilo une fois comme ça !)).

Reply

Marsh Posté le 17-04-2002 à 13:26:46    

en effet, je me suis planté en copiant, mais pas dans mon code...
le compteur est bien incrémenté à la fin de la manipulation sur la meme case du tableau d'images...

Reply

Marsh Posté le 17-04-2002 à 15:37:56    

En mettant un point d'arrêt dans la boucle de 'delete' (ou MessageBox()), faudrait voir si c'est tj pour le même indice qui provoque pb.  
Y a une "astuce" (je pratique pas (encore) le C++ => sentiment seulement).
 
Les tImg[] sont corrects en les utilisant ?
 
cptImg n'a pas été modifié en cours de "route" ?

Reply

Marsh Posté le 17-04-2002 à 17:54:26    

non, c bon maintenant... Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed