Page 1 sur 1

[Tuto] récupérer le nom du dernier répertoire d'un Dossier

Publié : dim. 29/août/2010 16:31
par Ar-S
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.

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)
 
Voilou. Image

Re: [Tuto] récupérer le nom du dernier répertoire d'un Dossi

Publié : dim. 29/août/2010 19:19
par Backup
t'es en forme !! :D

Re: [Tuto] récupérer le nom du dernier répertoire d'un Dossi

Publié : lun. 06/sept./2010 19:00
par bombseb
Et comme ca (plus court):

Code : Tout sélectionner

Procedure.s GetLastDir (DossierSource$)
  If Right (DossierSource$, 1) = "\"
    Flag = 0 
  Else
    Flag = 1
  EndIf
  
  dir$ = StringField (DossierSource$, CountString (DossierSource$, "\") + Flag, "\")
  
  ProcedureReturn dir$
EndProcedure

Re: [Tuto] récupérer le nom du dernier répertoire d'un Dossi

Publié : lun. 06/sept./2010 20:36
par Ar-S
En effet, c'est plus court.
Par contre en cas d'erreur, pas de retour 0
si par exemple ton chemin est "c:\", ta proce va retourner "c:"

Re: [Tuto] récupérer le nom du dernier répertoire d'un Dossi

Publié : mar. 07/sept./2010 13:53
par bombseb
oui, mais bon je considère c: comme un répertoire...

Re: [Tuto] récupérer le nom du dernier répertoire d'un Dossi

Publié : ven. 17/sept./2010 10:10
par Ar-S
bombseb a écrit :oui, mais bon je considère c: comme un répertoire...
Toi oui mais un programme (et quelques user lambda) sont très con :mrgreen:
Mais là je j'avoue je chipote ;)