Chemin d'un fichier

Ben-The Hurricane

Membre enregistré
5 Novembre 2003
5
0
Lyon
Bonjour,

Je suis en train de faire une petite application en Carbon/C++, et j'aimerais récuperer le "chemin du fichier" que j'ouvre, grâce à un "OpenFileDialog", sous la forme d'un "char *". Comment je peux faire?


Merci pour votre aide,
Ben
 
Ben-The Hurricane a dit:
Bonjour,

Je suis en train de faire une petite application en Carbon/C++, et j'aimerais récuperer le "chemin du fichier" que j'ouvre, grâce à un "OpenFileDialog", sous la forme d'un "char *". Comment je peux faire?


Merci pour votre aide,
Ben

Je ne sais pas ce que tu appelle "OpenFileDialog".
Sur Mac OS 9.0 et plus, le Navigation Manager passe par NavGetFile pour selectionner le fichier.

En sortie tu obtient un FSSpec qui decrit nom du fichier et chemin sur ce fichier.
Le FSSpect contient un vRefNum (descripteur de disque) et parID (descripteur de chemin)

Pour obtenir le chemin en clair, leplus simple est de passer par un PBGetCatinfo recursif apres avoir fixé le chemin courant au chemin obtenu.

Du genre :

Bloc de code:
*************************************************************************************
                                GetNomDirMac
=> Volume, Id a rechercher
<= Nom du chemin menant à cette id
*********************************************************************************/
static OSErr GetNomDirMac(short volume,long DirId,char * chemin)
{
CInfoPBRec cinfo;
OSErr err;
char nom[255];

/* Extraction des informations recusrives*/

do
	{
	cinfo.dirInfo.ioNamePtr=(StringPtr)nom;
	cinfo.dirInfo.ioVRefNum=volume;
	cinfo.dirInfo.ioFDirIndex=-1; /* Info sur le nom */
	cinfo.dirInfo.ioDrDirID=DirId;
	err=PBGetCatInfo(&cinfo,false);

	if(!err)

		{
		PtoCstr((StringPtr)nom);
		strcat(nom,":");
		strcat(nom,chemin);
		strcpy(chemin,nom);
		err=GetNomDirMac(volume,cinfo.dirInfo.ioDrParID,chemin);
		}
	} while(err==noErr);
return(err)
}

Cordialement