DIRCHANGE() Function Sample
/*
DIRCHANGE()
Change the current DOS directory
Syntax :
DIRCHANGE( <cDir> ) –> nSuccess
Arguments :
<cDir> is the name of the directory to change to, including the drive.
Returns :
DIRCHANGE() returns 0 if successful; -1 if there is an argument error. Otherwise, DIRCHANGE() returns the DOS error code.
Description :
DIRCHANGE() changes the current DOS directory. This function may also be used to determine whether or not a directory exists.
Examples :
The following example attempts to change to the “c:\dos” directory. If it is unsuccessful, an error message is displayed.
nResult := DIRCHANGE("c:\dos")
IF nResult != 0
? "Cannot change directory. "
DO CASE
CASE nResult == 3
?? "Directory does not exist."
CASE nResult == 5
?? "Access to directory denied."
ENDCASE
BREAK
ENDIF
You may also use something like this:
DIRCHANGE( "..\..\test" )
Remarks :
If <cDir> includs drive specifier, DIRCHANGE() also changes the current drive.
*/
PROC DirChTest()
LOCAL cDirToChange := "c:\harbour"
LOCAL cCurDrive := DISKNAME()
LOCAL nResult
? "Current Drive is :", cCurDrive
nResult := DIRCHANGE( cDirToChange )
IF nResult = 0
cCurDrive := DISKNAME()
? "Current directory of drive", cCurDrive, "changed to :", CURDIR()
ELSE
? "Cannot change directory to", cDirToChange, ": "
DO CASE
CASE nResult = 2
?? "File does not exist."
CASE nResult = 3
?? "Directory does not exist."
CASE nResult = 5
?? "Access to directory denied."
CASE nResult = 15
?? "Invalid Drive was specified."
CASE nResult = 21
?? "Drive not ready."
OTHE
?? "Unknown error !", nResult
ENDCASE
ENDIF
// Inspect dir existence :
cDirToChange := "C:\TEMP"
? DISKNAME() + ":\" + CURDIR()
? cDirToChange, "directory is", IF( IsThisADir( cDirToChange ),;
"", "not" ), "exists."
? DISKNAME() + ":\" + CURDIR()
?
WAIT "End of DIRCHANGE.PRG"
RETU // DirChTest()
/*
Using DIRCHANGE() function to determine whether or not a directory exists.
*/
FUNC IsThisADir( cDirSpec )
LOCAL cCurrent := DISKNAME() + "\" + CURDIR(),;
lRetval := .F.
IF !EMPTY( cDirSpec )
lRetval := ( DIRCHANGE( cDirSpec ) = 0 )
DIRCHANGE( cCurrent )
ENDIF
RETU lRetval // IsThisADir()