une commande qui change tout!
Salut a tous,
je suis actuellement sur un projet développé en C++ avec SDL et certains j'ai quelques soucis d'exécution... mon programme plante! toute fois j'ai remarqué au cours de mes test pour trouver l'erreur, qu'il suffisait de rajouter une ligne de code pour résoudre le problème:par exemple, une fonction qui charge un fichier mais qui fait tout planter:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| //on ouvre le fichier passé en parametre
ifstream fichier(_adresse_fichier.c_str(), ios::in);
//si le fichier est bien ouvert
if(fichier!=NULL){
//on creer des variables temporaires
int identifiant;
string adresse_image;
int nombre_collonne;
int nombre_ligne;
Sprite* p_sprite = NULL;
//tant qu'on est pas a la fin du fichier
while(!fichier.eof()){
//on lit le fichier
fichier >> identifiant >> adresse_image >> nombre_collonne >> nombre_ligne;
//création du sprite
creer_sprite();
//on cherche le sprite
p_sprite = avoir_p_sprite(-1);
//modification du sprite
p_sprite->charger_image(adresse_image.c_str(),nombre_collonne,nombre_ligne);
//assignation de l'identifiant
p_sprite->modifier_identifiant(identifiant);
}
//fermeture du fichier
fichier.close();
} |
et la meme mais avec la ptite commande 'magique' qui ne plante pas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| //on ouvre le fichier passé en parametre
ifstream fichier(_adresse_fichier.c_str(), ios::in);
//si le fichier est bien ouvert
if(fichier!=NULL){
//on creer des variables temporaires
int identifiant;
string adresse_image;
int nombre_collonne;
int nombre_ligne;
Sprite* p_sprite = NULL;
//tant qu'on est pas a la fin du fichier
while(!fichier.eof()){
//on lit le fichier
fichier >> identifiant >> adresse_image >> nombre_collonne >> nombre_ligne;
//création du sprite
creer_sprite();
//Copperfield en action!
system("PAUSE");
//on cherche le sprite
p_sprite = avoir_p_sprite(-1);
//modification du sprite
p_sprite->charger_image(adresse_image.c_str(),nombre_collonne,nombre_ligne);
//assignation de l'identifiant
p_sprite->modifier_identifiant(identifiant);
}
//fermeture du fichier
fichier.close();
} |
bref, tout ça c'est génial... a part que je ne sait toujours pas d'où vient le problème et que j'ai une jolie fenêtre de console qui me demande d'appuyer sur une touche pour continuer à chaque fois... bref je ne comprend pas comment cette simple commande peut tout changer comme ça (à signaler que je n'utilise pas de thread dans ce projet). d'autant plus qu'avant, toujours sur le même projet, j'avais trouver le moyen de résoudre un bug qui faisait planter le programme au début de l'exécution simplement (ou pas) en ajoutant un
Code:
printf("youhou...");
à la fin du code, juste avant le dernier return 0;
peut être est-ce juste une erreur de conception... mon programme est surement bourré de problème mais là je ne comprend pas. ou peu être est-ce un problème avec le compil? je suis sous CodeBlocks...
quelqu'un aurais t'il une idée du pourquoi du comment? je peut donner le code si quelqu'un a le courage de se plonger dedans pour comprendre...