Partagez votre expérience de PureBasic avec les autres utilisateurs.
GallyHC
Messages : 1708 Inscription : lun. 17/déc./2007 12:44
Message
par GallyHC » mar. 22/mars/2011 11:13
Bonjour,
Pour un code de décompression de Zip j’avais besoin de faire une routine de création de répertoire multiple. Par exemple j’avais « Temp/test/01/ » donc le petit code va créer la suite de répertoire.
Voila le code et l’exemple en dessous :
Code : Tout sélectionner
Procedure.b Create_Directory(directory.s)
;
Define bindex.l
Define bnumbs.l
Define bsplit.s
Define stemps.s
Repeat
bindex + 1
bsplit = StringField(directory, bindex, "/")
If bsplit <> ""
If bindex = 1
stemps + bsplit
Else
stemps + "\" + bsplit
EndIf
If FileSize(stemps) = -2
bnumbs + 1
Else
If CreateDirectory(stemps) <> 0
bnumbs + 1
EndIf
EndIf
EndIf
Until bsplit = ""
bindex - 1
If bindex = bnumbs
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Create_Directory("temp/test/01/")
j'espere que ce sera utile a certain
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
gnozal
Messages : 832 Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :
Message
par gnozal » mar. 22/mars/2011 14:14
Pour info, sous windows uniquement :
G-Rom
Messages : 3641 Inscription : dim. 10/janv./2010 5:29
Message
par G-Rom » mar. 22/mars/2011 14:25
et la version portable :
Code : Tout sélectionner
ProcedureDLL.b MakeSureDirectoryPathExistsEX_(dir$)
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
ProcedureReturn MakeSureDirectoryPathExists_(dir$)
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
result = opendir_(dir$)
If result <> 0
closedir_(result)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
CompilerEndIf
EndProcedure
Debug MakeSureDirectoryPathExistsEX_("/usr/lib/")
edit : code pas bon , je verrais plus tard pour une modif.
Dernière modification par
G-Rom le mar. 22/mars/2011 14:46, modifié 1 fois.
Kwai chang caine
Messages : 6989 Inscription : sam. 23/sept./2006 18:32
Localisation : Isere
Message
par Kwai chang caine » mar. 22/mars/2011 14:44
gnozal a écrit : Pour info, sous windows uniquement :
coooll !!!
J'avais vu souvent cette API, mais pas capté qu'elle creait les repertoires elle meme.
Je croyais que c'etait juste un controle de la presence, un peu comme Filesize
Merci pour l'info
GallyHC
Messages : 1708 Inscription : lun. 17/déc./2007 12:44
Message
par GallyHC » mer. 23/mars/2011 22:08
Bonjour tous,
Merci pour c'est information fort intéressante, mais mon code appart juste le « \ » au lieu du « / » dans la création du répertoire sera multi OS ‘Windows, mac et linux) avec pas grand choses en code enfin c’est ce que je penses je serais le teste sur linux et max demain soir mais je pense que cela sera toujours bon.
Apres avec des API ok sa fonctionne mais sa reste non multi-OS (c’est mon avis).
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Chris
Messages : 3731 Inscription : sam. 24/janv./2004 14:54
Contact :
Message
par Chris » jeu. 24/mars/2011 7:19
Et comme ça, ça doit être multi-plateforme.
Il suffit juste de rajouter le test pour la création des répertoires dans la boucle
Code : Tout sélectionner
Procedure CreateMultiDirectory(Volume.s, Directory.s)
If Right(Directory,Len(Directory))<> "\" : Directory + "\" : EndIf
Volume = Left(Volume, 1)+":\"
SetCurrentDirectory(Volume)
For i = 1 To CountString(Directory, "\")
Dir$ + StringField(Directory, i, "\")+"\"
CreateDirectory(Dir$)
Next
EndProcedure
CreateMultiDirectory("C:\","MonTest\Temp\test\01")
GallyHC
Messages : 1708 Inscription : lun. 17/déc./2007 12:44
Message
par GallyHC » jeu. 24/mars/2011 13:25
Bonjour,
Chris> la sa a l'aire po mal du tout, merci
je vais voir a utilise ce code
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)