en bref elle recoit un chemin en entrée, et a la fin elle doit me renvoyer juste le nom du fichier...
ma fonction marche parfaitement le probleme vient lorsqu'elle me renvoi le "nomfichier".
j'utilise cette fonction a cette occasion:
SendDlgItemMessage (hWndResults, IDC_LISTESUPPR, LB_ADDSTRING, (WPARAM) 0, (LPARAM) (LPCTSTR)ConcatNom(strNomFichier) );
et donc le probleme, c'est que les caracteres que je recois dans ma listbox sont d'une part incomprehensible et ne sont pas ceux ke j'attend, alors si quelqu'un a une idée voire même la solution a mon probleme, je suis preneur car ca doit faire deux heures ke je m'arrache les cheveux la dessus.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 janv. 2007 à 13:58
Salut,
On peut retourner le pointeur sur le caractère qui suit le dernier "" du chemin. Voici un petit exemple:
char *ConcatNom(char* NomFichier)
{
int taille=strlen(NomFichier);
while(NomFichier[taille]!='\\') taille--;
taille++;
return NomFichier+taille;
}
Cette fonction prend comme paramètre le pointeur sur le premier caractère du chemin et renvoie le pointeur sur la première lettre du nom. Le buffer contenant le chemein doit être déclaré en global ou en static dans la fonction appelante.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 2 janv. 2007 à 17:04
Salut racpp. Ta fonction retourne un pointeur sur le premier
caractère du nom du fichier c'est bien ça? Dans ce cas, y’a sûrement un
meilleur moyen de faire que d’appeler strlen. J'avais fais un snippet la dessus
ici:
char *FileName (char *path)
{
char *c path, *ret path;
if(c == 0) return 0;
while(*c)
{
if(*c '\\') ret c+1;
c++;
}
return ret;
}
Même principe mais on parcours une seul fois la chaîne.
Et puis d'ailleurs:
int taille =strlen(NomFichier);
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 2 janv. 2007 à 17:16
On peut aussi utiliser strrchr qui est censée être optimisée
while(NomFichier[taille]!='\\') taille--;
> Attention aussi au cas ou on ne trouvera jamais de '\\'
_____________________________________
Un éditeur de ressources gratuit pour Windows
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 janv. 2007 à 17:51
Sakingdom >> C'est vrai que c'est mieux d'éviter strlen(). J'ai fait ce petit code en quelques secondes à partir du code présenté par l'auteur de la question. Cette fonction est donc à améliorer.
Avec while(NomFichier[taille]!='\\') taille--; la recherche commence depuis le zéro final de la chaine. Ce dernier fait donc bien partie du buffer mais n'est pas pris en compte par strlen() qui retourne le nombre de caractères affichables.