Tableau d'images [C++Builder] - C++ - Programmation
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 !)).
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...
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" ?
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