[Tuto] récupérer le nom du dernier répertoire d'un Dossier
Publié : dim. 29/août/2010 16:31
Il existe surement de nombreuses façons de récupérer le nom du dernier répertoire d'un dossier, voici la mienne.
Utilisation des commandes ReverseString(), FindString(), mid()
Assez longue car diverses vérifications sont faites.
On peut aussi ajouter au choix le Slash à la fin du nom
L'astuce consiste à inverser le nom du dossier, ainsi, il suffit de rechercher le second slash pour détecter la position du nom du dernier dossier.
Voilou. 
Utilisation des commandes ReverseString(), FindString(), mid()
Assez longue car diverses vérifications sont faites.
On peut aussi ajouter au choix le Slash à la fin du nom
L'astuce consiste à inverser le nom du dossier, ainsi, il suffit de rechercher le second slash pour détecter la position du nom du dernier dossier.
Code : Tout sélectionner
; Ar-S / 2010 PB 4.50
; Récupération du dernier nom de dossier avec possibilité de lui faire précéder la date.
SOURCE$="c:\purebasic\examples\" ; pour l'exemple
; Procédure de récupération du dernier nom de fichier
; L'option choixSlash permet d'ajouter "\" ou pas à la fin du nom.
; #SLASHON pour l'ajouter
; #SLASHOFF pour ne pas l'ajouter
Procedure.s GetLastDirectory(DossierSource$,choixSlash)
#SLASHON=1
#SLASHOFF=0
;vérification que le slash existe à la fin du chemin sinon on l'ajoute.
if NOT right(DossierSource$,1)="\"
DossierSource$+"\"
EndIf
; vérification que le chemin existe et qu'on ne soit pas à la racine d'un lecteur
if DossierSource$<>"" AND len(DossierSource$)>3
; On inverse le nom du chemin complet
DossierSource$=ReverseString(DossierSource$) ; celui si prend donc le nom : \selpmaxe\cisaberup\:c
PosSlash=FindString(DossierSource$,"\",3)
;Gestion de l'ajout du Slash (/) ou pas
select choixSlash
case #SLASHON
; Extraction du nom du répertoire
DossierSource$=ReverseString(mid(DossierSource$,2,PosSlash-2))+"\"
case #SLASHOFF
; Extraction du nom du répertoire
DossierSource$=ReverseString(mid(DossierSource$,2,PosSlash-2))
EndSelect
; si le chemin n'existe pas, on retourne 0
else
DossierSource$="0"
endif
ProcedureReturn DossierSource$
EndProcedure
Debug "avec slash : " + GetLastDirectory(SOURCE$,#SLASHON)
Debug "sans slash : " + GetLastDirectory(SOURCE$,#SLASHOFF)
