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)
