I am looking for the instruction that return the path of the temp directory
win2000 and WinXp
(c:\documents and settings\user1.....)
Thanks
Philippe Jacquet
I am looking for the instruction that return the path of the temp directory
win2000 and WinXp
(c:\documents and settings\user1.....)
Thanks
Philippe Jacquet
GetEnv( "TEMP" )
EMG
Thans
Philippe Jacquet
//--- Returns temporary directory name without trailing backslash
function getTempDir()
local cDir := GetEnv("TEMP")
if empty(cDir)
cDir := GetEnv("TMP")
endif
if Right( cDir, 1 ) == "\"
cDir := SubStr( cDir, 1, Len( cDir ) - 1 )
endif
if !empty(cDir)
if !lIsDir(cDir)
cDir := GetWinDir()
endif
else
cDir := GetWinDir()
endif
return cDirHi James.
I think your code is incomplete.
It may so occur that there are defined two variables TEMP and TMP in environment. For example TEMP=C:\TEMP and TMP=C:\TMP while directory C:\TEMP does not exist but directory C:\TMP does exist.
In this case I think directory C:\TMP should be used instead of GetWinDir().
Vladimir Grigoriev
Maybe something as the following
//--- Returns temporary directory name without trailing backslash
function GetTempDir()
local cTargetDir, cTempDir, cTmpDir
local lTempExist, lTmpExist
cTempDir := GetEnv( "TEMP" )
cTmpDir := GetEnv( "TMP" )
if ( Right( cTempDir, 1 ) == "\" )
cTempDir := SubStr( cTempDir, 1, Len( cTempDir ) - 1 )
endif
if ( Right( cTmpDir, 1 ) == "\" )
cTmpDir := SubStr( cTmpDir, 1, Len( cTmpDir ) - 1 )
endif
lTempExist := .F.
if ( !empty( cTempDir ) )
if ( IsDir(cTempDir ) )
lTempExist := .T.
endif
endif
lTmpExist := .F.
if ( !empty( cTmpDir ) )
if ( IsDir(cTmpDir ) )
lTmpExist := .T.
endif
endif
do case
case ( lTempExist )
cTargetDir := cTempDir
case ( lTmpExist )
cTargetDir := cTmpDir
otherwise
cTargetDir := GetWinDir()
endcase
return ( cTargetDir )
Vladimir,
Thanks for the improvement.
James
Also the statement
if ( Right( cTempDir, 1 ) == "\" )
cTempDir := SubStr( cTempDir, 1, Len( cTempDir ) - 1 )
endif
is not correct enough.
The following would be more correct.
if ( ( Right( cTempDir, 1 ) == "\" ) .AND. ! ( Right( cTempDir, 2 ) == ":\" ) )
cTempDir := SubStr( cTempDir, 1, Len( cTempDir ) - 1 )
endif
Vladimir Grigoriev
James Bott wrote:Enrico's solution won't always work.
I used GetEnv( "TEMP" ) for at least 10 years and got no reports about problems with it.
Enrico,
Yea, like Valdimir says, thats too easy.
I suppose if getEnv("TEMP") returns a blank string then any temp files will just be written to the current directory. There probably won't be any error message. I'm not saying there is anything wrong with that, just that you probably wouldn't know if it was not working as expected.
James
If GetEnv( "TEMP" ) should have return an empty string then I would consider more correct to put temporary files in the current directory rather than in WINDOWS directory.
EMG
Enrico,
I agree. I didn't write the function I posted, I just had it in my notes. I never really carefully looked at what it was doing.
James
I would consider more correct to put temporary files in the current directory
In the current directory (that is the one from which my program started, in my environment).
EMG