Extraire le dernier dossier d'un chemin

Résolu
emmanuelgo Messages postés 58 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 13 avril 2005 - 29 mars 2005 à 17:24
retaks666 Messages postés 286 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 juillet 2007 - 29 mars 2005 à 19:09
Salut à tous...

je souhaiterai créer une fonction simple permettant d'extraire le dernier dossier d'un chemin (juste avant le nom du fichier).
par exemple :
en entrant le chemin :
D:\Dossier\SousDossier\SousSSDossier\LeDernierDossier\MonFichier.fic
la fonction renvoi :
LeDernierDossier\
j'ai bricoler un truc avec ExtractFilePath, puis avec une recherche du dernier slash etc etc....mais c'est vraiment du bricolage et ça ne me satisfaisait pas...
Y'a t il une solution simple ?
je n'ai rien trouvé dans "utilitaires de nom de fichiers" dans l'aide delphi...

merci de votre aide.

5 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
29 mars 2005 à 18:15
Je ferais comme suit :

function DernierDossier ( const NomFichier : string ) : string ;
var
Chemin : String ;
begin
Chemin := ExtractFileDir( NomFichier );
Result := ExtractRelativePath(Chemin,Chemin);
end ;

Cordialement.
3
emmanuelgo Messages postés 58 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 13 avril 2005
29 mars 2005 à 18:30
merci pour ta réponse rapide.... je trouve ça etonnant mais : ça marche !
j'avais tenté un truc avec ExtractRelativePath, mais sans succés... cette façon d'utiliser est assez etonnante puisque voila ce que dit l'aide delphi

function ExtractRelativePath(const BaseName, DestName: string): string;





Description





Appelez ExtractRelativePath pour convertir un chemin complet en chemin relatif. Le paramètre DestName spécifie le chemin et le nom de fichier à convertir. BaseName est le nom complet du répertoire de base auquel le chemin renvoyé fait référence. BaseName peut ou non contenir un nom de fichier mais doit contenir le délimiteur de chemin d'accès final.

je ne comprends pas vraiment pourquoi ta fonction renvoi le dernier dossier....
mais ça marche !!!
merci beaucoup ! ça m'aide énormément !
0
retaks666 Messages postés 286 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 juillet 2007
29 mars 2005 à 18:50
Tu peux le faire que en bricolant, tiens je t'ai fait une fonction
bricolage, c'est un peu lourd car j'utilise aucune variables mais ça
marche ;)



function getlpath(rpath:string):string;

begin

if (rpath[length(rpath)] <> '\') then rpath := rpath + '\';

result:=copy(rpath,

(rpos('\',copy(rpath,1,length(rpath)-1),-1)+1),

(length(application.exename)-(rpos('\',copy(rpath,1,length(rpath)-1),-1))));

result := copy(result,1,length(result)-1);//pour enlever le slash a la fin

end;
0
emmanuelgo Messages postés 58 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 13 avril 2005
29 mars 2005 à 18:54
merci à toi retaks666....
c'est un peu lourd effectivement !!! mais en gros ça ressemble à ce que j'avais bricoler moi même.... regarde la solution de WhiteHippo : beaucoup plus simple n'est ce pas ??
merci quand meme !!
0

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

Posez votre question
retaks666 Messages postés 286 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 juillet 2007
29 mars 2005 à 19:09
oui c'est sur, mais il fallait connaître la fonction ;)
0
Rejoignez-nous