`
Par2: Recursively add/delete directories 2000-12-18 -- James Cooke Try this function to recursively create an entire subdir structure. I wrote this yonks ago and has some legacy stuff in it but it works ok. It is called like this: Makepath('c:\dir1\dir2\dir3\xyz.txt') !Inside the global Map: MODULE('WINAPI') !!Prototype to play sound (requires equate for LPCSTR data type in After Global includes) OMIT('***',_WIDTH32_) fn_split(*CString,*CString,*CString,*CString,*CString),short,raw,name('_fnsplit') MkDir(*CSTRING),SHORT,RAW,NAME('_mkdir') End *** COMPILE('***',_WIDTH32_) fn_split(*CString,*CString,*CString,*CString,*CString),short,raw,name('_fnsplit') MkDir(*CSTRING),SHORT,RAW,NAME('_mkdir') *** END !Function Variables: MakePath FUNCTION (FullFileName) ! Declare Procedure ThePath CSTRING(255) TheDrive CSTRING(255) TheDir CSTRING(255) TheName CSTRING(255) TheExt CSTRING(255) BuildString STRING(50) FullDirectoryName CSTRING(255) !Function Code: MEMBER('programs.clw') ! This is a MEMBER module MakePath FUNCTION (FullFileName) ! Declare Procedure CODE ! Begin processed code z#=0 ThePath = FullFileName If Fn_Split(ThePath,TheDrive,TheDir,TheName,TheExt). clear(FullDirectoryName) loop i#=1 to len(clip(TheDir)) If TheDir[i#]='\' BuildString=clip(BuildString)&'\' FullDirectoryName = left(BuildString) clear(FullDirectoryName[len(clip(FullDirectoryName))]) If FullDirectoryName FullDirectoryName = TheDrive&FullDirectoryName Z#+=MkDir(FullDirectoryName) end else BuildString[i#]=TheDir[i#] end end If z#<0 then return(0) else return(1). Printed November 21, 2024, 1:01 pm This article has been viewed/printed 35220 times. |