cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012
-
11 mai 2004 à 12:05
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012
-
11 mai 2004 à 15:23
Bonjour,
Je suis en train de faire évoluer une appli qui a pas de paramétrage à sortir de l'appli. Tout est codé en dir et ça craint assez (ex : strcpy(st,"c:\winnt") ).
Il ya également une bonne trentaine de message d'erreur qui doivent devenir paramétrable dans un fichier INI. Ces messages sont actuellement affiché par messagebox.
J'ai codé une fonction qui retourne un pointeur *char. J'ai lu pas mal de choses sur le forum, il m'a semblé que finallement ce n'était pas la meilleure solution... Je vous la présente quand même :
numerreur : le numéro d'erreur dans fichier INI
defmessage : message par défaut à afficher si jamais pb avec fichier INI.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 11 mai 2004 à 14:26
non si ta variable est globale il n'y a aucun risque. Le prblème se pose quand on veut retourner un tableau déclaré dans la fonction, qui est donc détruit à la sortie de la fonction, mais ici ce n'est pas le cas.
hilairenicolas
Messages postés398Date d'inscriptionjeudi 30 octobre 2003StatutMembreDernière intervention15 juin 20072 11 mai 2004 à 14:45
moi je comprends pas la logique, tu fais une fonction qui retourne quelque chose qui est connu
pourquoi ne pas faire une fonction void, qui ne retourne rien, et utiliser m_erreurmessage directement puisqu'il est accessible de n'importe ou ?
le seul interet je trouve est de pouvoir utiliser le retour avec un pointeur, mais bon avoir :
char * pErreur = ErrMessage(...);
ou plutot
ErrMessage(...);
char *pErreur = m_erreurmessage;
en général, quand une fonction retourne un pointeur, il a été alloué dans la fonction, soit :
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 11 mai 2004 à 15:23
Merci de vos réponses,
>>hilairenicolas : c'est vrai que je n'avais pas vu ça comme ça... C'est surrement plus propre. En fait, c'était pour ne pas trop changer le code existant qui est assez dense par endroit.
J'utilise parfois la fonction comme ça
Merci encore, je ne suis pas un pro en C donc tous les conseils sont les bienvenus, je dois porter un vieux code (win3.11) vers XP, et c'est pas drôle tous les jours :op