jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007
-
20 oct. 2006 à 10:13
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
21 oct. 2006 à 23:01
Bonjour,
Je programme sous VS6 et j'ai un probleme que j en arrive pas a
resoudre depuis 2 jours, alors apres 2 presque nuit blanche et de tout
petits yeux me voila devant vous en esperant trouver l'origine de mon
soucis!
Je vous explique, le code suit en dessous:
J'ai plusieur objet d'une meme class, je lis des valeur dans un fichier
et selon ce qu'il lis sur une ligne, il enregistre les valeur dans tel
ou tel objet... ce sont des coordonnées et les differents objet sont
des couches (etages). Je créer un objet par etage car chaque etage a sa
hauteur et couleur approprié!
Et a la fin il dessine chaque objets, mon but et de pouvoir dans le
futur decider de dessiner la couche que je veux grace au menu de mon
programme!
Mon probleme ne se trouve pas dans la compilation, aucune erreur de ce
cote la, mon programme s'execute parfaitement, je clique sur ouvrir, je
selectionne mon fichier et ensuite il me dessine n'importe quoi!!! par
contre (cf en dessous) si dans mon switch(LTest) je ne laisse qu'un
seul et unique case, il me le dessine exactement comme il faut, mais
des que je met tous les case, la il me dessine n importe quoi!
J'ai fait un test en ecrivant dans un fichier les valeur recu par
AddValue() et en ecrivant les valeurs tout a la fin, une fois tout le
fichier lu qu'elles sont les valeurs dans mes objets... AddValues
recoit les bonne valeurs, mais apres mes objets ont des valeurs
totalement fausse et abhérentes genre négative par exemple... enfin
bref des valeur rien a voir!
Avec le debug j'ai verifié les valeur qui s'enregistrait pourtant dans
mes objets et ca a l air correcte! Je ne comprend vraiment pas ce qu'il
se passe! Merci infiniment pour votre aide!
case
INDICE_CONT :
LCont.AddValue(centrex,centrey,qwidth,qlenght); break;
case
INDICE_NELL :
LNell.AddValue(centrex,centrey,qwidth,qlenght); break;
case
INDICE_ETAL1 :
LEtal1.AddValue(centrex,centrey,qwidth,qlenght); break;
case INDICE_ETAL2 :
LEtal2.AddValue(centrex,centrey,qwidth,qlenght); break;
case
INDICE_VIA1 :
LVia1.AddValue(centrex,centrey,qwidth,qlenght); break;
case INDICE_ACTIVE :
LActive.AddValue(centrex,centrey,qwidth,qlenght); break;
case
INDICE_POLY :
LPoly.AddValue(centrex,centrey,qwidth,qlenght); break;
case INDICE_PPLUS :
LPPlus.AddValue(centrex,centrey,qwidth,qlenght);
break;
}
}
}
}
fclose(filein);
return 1;
}
Et pour finir le fichier lu ressemble a ca: Je precise que je ne
peux pas changer la facon dont est construit ce fichier, il est exporté
d'un autre programme.
DS 1 5 1;
L PPLUS;
L ACTIVE;
B 12 46 38,315;
L ACTIVE;
L POLY;
B 36 10 38,315;
L ETAL1;
L CONT;
L ETAL2;
L VIA1;
L NELL;
DF;
DS 2 5 1;
L PPLUS;
L ACTIVE;
B 12 46 38,251;
L ACTIVE;
L POLY;
B 36 10 38,251;
L ETAL1;
L CONT;
L ETAL2;
L VIA1;
L NELL;
DF;
DS 3 5 1;
L PPLUS;
L ACTIVE;
B 12 46 108,243;
L ACTIVE;
L POLY;
B 36 10 108,243;
L ETAL1;
L CONT;
L ETAL2;
L VIA1;
L NELL;
DF;
Voila, je crois que je vous ai tout dis!
Encore un GRAND merci d'avance a ceux qui m'aideront a trouver pourquoi ca ne fonctionne pas comme il faudrait!
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 21 oct. 2006 à 23:01
Oui mais tu n'as pas compris ton erreur en allouant avec QUAD[nombre] (alloc statique).
Cela ne te choque pas : CLASS c = CLASS(val,val,val,val); !!!!!?
Tu n'as pas défini de constructeur de copie (ni eventuellement d'operateur d'affectation) :
LAYER(const LAYER&);
Quant tu alloues avec "new" il faut obligatoirement un constructeur de copie.
C'est pourquoi en allouant statiquement ton QUAD[4], il n'y a plus d'erreur.