Code : Tout sélectionner
Procedure.l CreateFileEx(FileId.l,FileName.s)
; Syntax:
; CreateFileEx(#File,FileName$)
;
; Auteur:
; Flype (flype@altern.org)
;
; Description:
; Créé un fichier vide comme la commande CreateFile() de Purebasic.
; Si le chemin n'existe pas, CreateFileEx() tente de le créer.
Protected FileId.l, FolderExist.l, FolderNumber.l, FolderIndex.l
Protected FileName.s, PathName.s, BufferName.s, FolderName.s, FolderNext.s
PathName = LCase(GetPathPart(FileName))
Repeat
FolderIndex + 1
FolderName = StringField(PathName,FolderIndex,"\")
If FolderName
BufferName + FolderName + "\"
If ExamineDirectory(#PB_Any,BufferName,"")
FolderNext = StringField(PathName,FolderIndex+1,"\")
If FolderNext
Repeat
Select NextDirectoryEntry()
Case 0
Break
Case 2
If DirectoryEntryName() = FolderNext
FolderNumber + 1
FolderExist = #True
EndIf
EndSelect
ForEver
If FolderExist
FolderExist = #False
Else
If CreateDirectory(BufferName+FolderNext)
Debug ReplaceString("Dossier '%s' créé","%s",BufferName+FolderNext)
FolderNumber + 1
Else
Debug ReplaceString("Dossier '%s' non créé","%s",BufferName+FolderNext)
Break
EndIf
EndIf
EndIf
EndIf
Else
Break
EndIf
ForEver
If (FolderIndex-1) = (FolderNumber+1)
ProcedureReturn CreateFile(FileId,FileName)
EndIf
EndProcedure
; Test
fichier$ = "C:\Mes Sources\Mes Tests\Temp\Temp2\fichier.txt"
If CreateFileEx(0,fichier$)
Debug ReplaceString("Fichier '%s' créé","%s",fichier$)
WriteStringN("Démonstration de CreateFileEx(#File,FileName$)")
WriteStringN("")
WriteStringN("Chemin de ce fichier :")
WriteStringN(fichier$)
CloseFile(0)
RunProgram("notepad",fichier$,GetPathPart(fichier$))
Else
Debug ReplaceString("Fichier '%s' non créé","%s",fichier$)
EndIf