Page 1 sur 1

[RESOLU] GetDirectoryPart()

Publié : mer. 23/déc./2009 19:30
par venom
Bonjour,

voilà je bloque sur une chose qui pourtant parait simple :

voilà je souhaiterai récuperer le nom d'un répertoire.
ex : C:\Dossier\test\
je souhaiterais récupérer le nom test.

bien évidemment vous allez me dire bin fait cela :

Code : Tout sélectionner

Debug Mid("C:\Dossier\test\", 12, 4)
certes :D mais le problème c'est que le dossier sera jamais le même donc je peut en effet savoir la logeur total mais pas le nombre de lettre du dossier.

donc une fonction comme GetFileyPart() aurais pou être sympa sous purebasic non ?
avez vous des idées si non ? ou un api ?







@++

Re: GetDirectoryPart()

Publié : mer. 23/déc./2009 20:17
par Jacobus

Code : Tout sélectionner

Structure Characters 
  c.c[0] 
EndStructure 

Procedure.s GetDirectoryPart(FileName.s) 
  Protected Directory.s, i.l 
  Protected *Directory.Characters 
  Directory = GetPathPart(FileName) 
  If Directory 
    i = Len(Directory) - 2 
    *Directory = @Directory  
    While i >= 0 And *Directory\c[i] <> '/' And *Directory\c[i] <> '\' 
      i - 1 
    Wend  
    i + 2 
    Directory = Mid(Directory, i, Len(Directory) - i) 
  EndIf 
  ProcedureReturn Directory 
EndProcedure

Re: GetDirectoryPart()

Publié : mer. 23/déc./2009 20:25
par venom
merci pour ta procédure Jacobus.
si sa peut servir a d'autres aussi. :wink:






@++

Re: GetDirectoryPart()

Publié : jeu. 24/déc./2009 4:01
par Anonyme2

Code : Tout sélectionner

Procedure.s GetDirectoryPart_2(FileName.s)
    Protected nb_dir
    
    If Len(FileName)
       If Right(FileName, 1) <> "\"
          ;// ajoute le \ si absent à la fin
          FileName + "\"
       EndIf
       nb_dir = CountString(FileName, "\")

      ProcedureReturn StringField(FileName, nb_dir, "\")
              
    Else
        ;// FileName est vide
        ProcedureReturn ""
    EndIf

EndProcedure

Re: GetDirectoryPart()

Publié : jeu. 24/déc./2009 4:20
par venom
Merci Denis,
ton code offre aussi le même rendu que celui de Jacobus avec des lignes en moins il y a de l'optimisation dans l'air :D







@++