auf eine Message im Alaska-Forum - ich konnte es kaum glauben - habe ich folgendes probiert:
Code: Alles auswählen
#include "directry.ch"
proc main
? "F_ATTR" ,F_ATTR
? "IsDir('C:\Temp\TEST1\TEST2')",IsDir("C:\Temp\TEST1\TEST2")
cSuch := "C:\Temp\TEST1\*.*"
? "cSuch",cSuch
aDir := directory(cSuch,"D")
aeval(aDir,{|aD|qout("-"+aD[F_ATTR]+"-",aD[F_NAME])})
return
*---------------------------------------------------------------------------
function IsDir(cDirName) // keine Wildcards !!!
local aNames, lReturn
if right(cDirName,1) = "\"
cDirName := left(cDirName,len(cDirName)-1)
endif
aNames := directory(cDirName,"D")
if empty(aNames) // da das letzte /
lReturn := .f.
else
lReturn := .t.
endif
return lReturn
Test2 IST ein Verzeichnis und bei TEXT_READONLY.TXT wurde das ReadOnly Flag gesetzt.F_ATTR 5
IsDir('C:\Temp\TEST1\TEST2') J
cSuch C:\Temp\TEST1\*.*
-- .
-- ..
-- NeueTextdatei.txt
-- Test2
-- text_READONLY.txt
Das ist schon seltsam, denn ich meine vor kurzem noch Attribute gesehen zu haben ... allerdings ist die Implementation meiner älteren Funktion IsDir() so ausgelegt, dass sie NICHT den Rückgabewert des Attributs abfragt. Wohl aus gutem Grund, denn so wie sie ist funktioniert diese.
Übrigens gleiches Verhalten zwischen 1.82 und 1.90.
Könnt Ihr dieses Verhalten bestätigen oder ist es eventuell abhängig vom BS ?