Extraire le dernier dossier d'un chemin [Résolu]

emmanuelgo 62 Messages postés vendredi 24 décembre 2004Date d'inscription 13 avril 2005 Dernière intervention - 29 mars 2005 à 17:24 - Dernière réponse : retaks666 289 Messages postés jeudi 2 janvier 2003Date d'inscription 16 juillet 2007 Dernière intervention
- 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.
Afficher la suite 

5 réponses

Répondre au sujet
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 29 mars 2005 à 18:15
+3
Utile
Je ferais comme suit :

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

Cordialement.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de WhiteHippo
emmanuelgo 62 Messages postés vendredi 24 décembre 2004Date d'inscription 13 avril 2005 Dernière intervention - 29 mars 2005 à 18:30
0
Utile
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 !
Commenter la réponse de emmanuelgo
retaks666 289 Messages postés jeudi 2 janvier 2003Date d'inscription 16 juillet 2007 Dernière intervention - 29 mars 2005 à 18:50
0
Utile
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;
Commenter la réponse de retaks666
emmanuelgo 62 Messages postés vendredi 24 décembre 2004Date d'inscription 13 avril 2005 Dernière intervention - 29 mars 2005 à 18:54
0
Utile
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 !!
Commenter la réponse de emmanuelgo
retaks666 289 Messages postés jeudi 2 janvier 2003Date d'inscription 16 juillet 2007 Dernière intervention - 29 mars 2005 à 19:09
0
Utile
oui c'est sur, mais il fallait connaître la fonction ;)
Commenter la réponse de retaks666

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.