This function create a file, just like CreateFile() does.
But if the folders specified in Filename$ doesn't exists, the function try to create them.
Code: Select all
Procedure CreateFileForce(FileId, FileName.s)
Protected FolderExist, FolderNumber, FolderIndex, Directory
Protected PathName.s, BufferName.s, FolderName.s, FolderNext.s
PathName = LCase(GetPathPart(FileName))
Repeat
FolderIndex + 1
FolderName = StringField(PathName,FolderIndex,"\")
If FolderName
BufferName + FolderName + "\"
Directory = ExamineDirectory(#PB_Any,BufferName,"")
If Directory
FolderNext = StringField(PathName,FolderIndex+1,"\")
If FolderNext
While NextDirectoryEntry(Directory)
If DirectoryEntryType(Directory) = #PB_DirectoryEntry_Directory
If DirectoryEntryName(Directory) = FolderNext
FolderNumber + 1
FolderExist = #True
EndIf
EndIf
Wend
If FolderExist
FolderExist = #False
Else
If CreateDirectory(BufferName+FolderNext)
Debug ReplaceString("Folder '%s' created","%s",BufferName+FolderNext)
FolderNumber + 1
Else
Debug ReplaceString("Folder '%s' not created","%s",BufferName+FolderNext)
Break
EndIf
EndIf
EndIf
FinishDirectory(Directory)
EndIf
Else
Break
EndIf
ForEver
If (FolderIndex-1) = (FolderNumber+1)
ProcedureReturn CreateFile(FileId, FileName)
EndIf
EndProcedure
; Test
fichier$ = "C:\My Sources\My Purebasics\Temp\Temp2\testfile.txt"
If CreateFileForce(0,fichier$)
Debug ReplaceString("File '%s' created","%s",fichier$)
WriteStringN(0, "Demonstration of CreateFileEx(#File,FileName$)")
WriteStringN(0, "")
WriteStringN(0, "Path of this file :")
WriteStringN(0, fichier$)
CloseFile(0)
RunProgram("notepad",fichier$,GetPathPart(fichier$))
Else
Debug ReplaceString("File '%s' not created","%s",fichier$)
EndIf
Regards