Help pour IN OUT dans une fonction

youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 7 déc. 2003 à 15:10
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 7 déc. 2003 à 16:53
j'ai essayé différente maniere sans pouvoir y arriver

exemple (source trouvé sur ce site pour recup le chemin a partir d'un fichier):

int GetFileDir(IN char *File,OUT char *Dir,IN bool EndSlash)
{
strcpy (Dir, File);
for (int i=strlen(Dir); i>1; i--)
{
if (Dir[i]=='\\')
{
if (!EndSlash) Dir[i]=0;
return strlen(Dir);
}
Dir[i]=0;
}
return -1;
}

dans cette exmple deja ca me met une erreur quand j'appel la fonction du strcpy donc j'ai fais a la place
Dir=File;

quand j'appel la fonction par exemple:

char *File="c:\windows\ex\caca.jpg" , * Dir;
bool Slash;
int resul=GetFileDir(File,Dir,Slash);

Dir devrais retourner quelque chose mais cette variable est vide (testé a l'aid de MessageBox

merci de vos réponse;

++ youpi

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2003 à 15:49
strcpy (Dir, File); ????
Dir ne pointe sur rien !!!
Et y a bien d'autres enormites.
Tu as trouve cela ici ??? Donne l'URL, svp, que j'enleve cette pollution.
BruNews, ciao...
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
7 déc. 2003 à 15:55
addr: http://www.cppfrance.com/code.aspx?ID=10928

mais ca repond po a ma kestion en dehors de cette fonction comment je fais pour utiliser le IN et le OUT???

merci d'avance :big)
youpi
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2003 à 16:00
IN OUT ??? pour quoi faire, ne sert a rien dans la declaration d'une fonction C normale. S'utilise dans l'ecriture de drivers mais ici, bof.
BruNews, ciao...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2003 à 16:06
J'ai verifie url, c'est nul mais rien a dire, donne resultat ok. Dans la source il n'y a pas d'exemple de pointeur invalide, seulement la fonction stupide.
Remplace par 2 pointeurs qui feront cela bien plus vite et suppression des strlen inutiles.
BruNews, ciao...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
7 déc. 2003 à 16:31
bah pour moi ca me servirais bien ca m'eviterais de faire un tres grand tableau en global. donc est-ce ke tu sais comment on fais????

car moi meme avec OUT ca marche po ca rempli ke dal dans le pointeur. ca dois le vider kan la fonction se termine!!

enfin j'en sais rien mais ca marche po chez moi si tu as testé le bout de code et k'il merche une petite source me servirai.

en faite c t pour testé ce bout de code et non pour l'utiliser c pour une autre fonction ke j'aimerai le testé.

j'ai regardé un peu dans le msdn et j'ai trouvé [in] [out] mais ca marche po non plus chez moi si un exmple ou source est a proposé

e-mail greenevilinusa2@hotmail.com
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2003 à 16:51
char szdir[260]; // un buffer !!!
char File[] = "c:\\windows\\ex\\caca.jpg";

// attention pas de controle, un chemin de fichier valide !!!
DWORD GetFileDir(char *file, char *pdir, BOOL bslh)
{char *c file, *d pdir;
while(*d++ = c++); // recopie faite dans pdir,
// *d pointe sur NULL final de pdir
while(*d != '\\') d--;
if(bslh) d++;
*d = 0;
return (d - pdir); // ici 1 cycle au lieu de boucle strlen
}

// appel ainsi
DWORD len = GetFileDir(File, szdir, 1);

BruNews, ciao...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2003 à 16:53
OUPS erreur de frappe:
while(*d++ = *c++);
manquait le *
BruNews, ciao...
0
Rejoignez-nous