salut,
qu'entends-tu par "a la main", et par "j'applique mes propres filtres" ? Tu veux dire que tu parcoures tous les fichiers d'un dossier sans utiliser les options de filtre de carbon et que tu fais des tests sur ce que tu récupère toi même ?
En clair tu me conseille d'utiliser FSGetCatalogInfoBulk plutot que FSCatalogSearch ? je vais essayer de faire des tests avec. Mon but est juste de recuperer les noms de fichiers.
Pourrais tu me montrer un bout de code qui marche pour le parcours des fichiers, si tu en as sous la main ?
merci.
Oui c'est ca.
Je vais essayer d'extraire ceci de mon code (c'est pas évident car mon code marche sous Carbon, Pas carbon et Windows) :
{
/* On cree un iterator */
FSSpec fspec;
FSRef fsref;
OSErr err;
finfo->iterator=NULL;
err=FSMakeFSSpec(0/* Volume courant */,finfo->dirId,(StringPtr)"",&fspec);
if(err==noErr)
{
/* Creation du FSRef */
err=FSpMakeFSRef(&fspec,&fsref);
if(err==noErr)
{
/* Creation de l'iterateur */
err=FSOpenIterator(&fsref,kFSIterateFlat,&finfo->iterator);
}
}
Et pour chaque extraction de fichier :
{
ItemCount actualObjects;
HFSUniStr255 unicodeName;
FSCatalogInfo catalogInfo;
FSRef documentFSRef;
err=FSGetCatalogInfoBulk(finfo->iterator,1,&actualObjects,NULL,kFSCatInfoNodeFlags,&catalogInfo,&documentFSRef,NULL,&unicodeName);
if(err==noErr)
{
CFStringRef strRef;
/* Extraction des informations du node suivant*/
strRef=CFStringCreateWithCharacters(kCFAllocatorDefault, unicodeName.unicode, unicodeName.length);
if(!CFStringGetCString(strRef, chaine, MAX_VAL_NAME_LENGTH, kCFStringEncodingUTF8))
{
/* Erreur a la conversion de nom */
strcpy(chaine,"");
}
else
{
/* Dois t'on extraire les noms de dossier ? */
if(catalogInfo.nodeFlags & kFSNodeIsDirectoryMask)
{
if(finfo->masqueAttrib&_A_SUBDIR) Ok=true;
else Ok=false;
finfo->attrib=_A_SUBDIR;
}
else
Ok=IsFileMatchMask(chaine,finfo->masque);
}
CFRelease(strRef);
}
else
return(err);
}
Cordialement