In regard to the functions that investigate the status of a file open/closed, I tried three types of functions but I get very different results if the file is open or closed.
Why is _isfileopen much slower if the file is open?
(defun its_ok (file / dwg)
(and (findfile file)
(setq dwg (open file "a"))
(not (close dwg))
)
)
; Lee Mac
(defun _FileOpen-p ( filename )
(not (vl-file-rename filename filename))
)
(defun _isfileopen (file / o r sf)
;; RJP - 2.1.2018
;; Idea translated from here: https://goo.gl/gK3UuX
;; Use with caution NOT heavily tested
(if (and (findfile file) (setq sf (vlax-get-or-create-object "Scripting.FileSystemObject")))
(progn (setq r (vl-catch-all-error-p
(setq o (vl-catch-all-apply 'vlax-invoke (list sf 'opentextfile file 8 0)))
)
)
(or r (vl-catch-all-apply 'vlax-invoke (list o 'close)))
(and sf (vlax-release-object sf))
)
)
r
)
FILE OPENED
Elapsed milliseconds / relative speed for 32768 iteration(s):
(_FILEOPEN-P "z:\\temp\\LspTest.lsp")......1312 / 13.2 <fastest>
(_FILEOPEN-P "z:\\temp\\LspTest.lsp")......1328 / 13.04
(ITS_OK "z:\\temp\\LspTest.lsp")...........4281 / 4.04
(ITS_OK "z:\\temp\\LspTest.lsp")...........4453 / 3.89
(_ISFILEOPEN "z:\\temp\\LspTest.lsp").....17141 / 1.01
(_ISFILEOPEN "z:\\temp\\LspTest.lsp").....17313 / 1 <slowest>
FILE CLOSED
Elapsed milliseconds / relative speed for 8192 iteration(s):
(ITS_OK "z:\\temp\\LspTest.lsp")..........1406 / 2.08 <fastest>
(ITS_OK "z:\\temp\\LspTest.lsp")..........1422 / 2.05
(_ISFILEOPEN "z:\\temp\\LspTest.lsp").....1718 / 1.7
(_ISFILEOPEN "z:\\temp\\LspTest.lsp").....1734 / 1.69
(_FILEOPEN-P "z:\\temp\\LspTest.lsp").....2891 / 1.01
(_FILEOPEN-P "z:\\temp\\LspTest.lsp").....2922 / 1 <slowest>
FILE OPENED
Elapsed milliseconds / relative speed for 32768 iteration(s):
(_FILEOPEN-P "z:\\temp\\XlsTest.xlsx")......1328 / 13.06 <fastest>
(_FILEOPEN-P "z:\\temp\\XlsTest.xlsx")......1359 / 12.76
(ITS_OK "z:\\temp\\XlsTest.xlsx")...........4110 / 4.22
(ITS_OK "z:\\temp\\XlsTest.xlsx")...........4156 / 4.17
(_ISFILEOPEN "z:\\temp\\XlsTest.xlsx").....17281 / 1
(_ISFILEOPEN "z:\\temp\\XlsTest.xlsx").....17344 / 1 <slowest>
FILE CLOSED
lapsed milliseconds / relative speed for 8192 iteration(s):
(ITS_OK "z:\\temp\\XlsTest.xlsx")..........1390 / 2.07 <fastest>
(ITS_OK "z:\\temp\\XlsTest.xlsx")..........1421 / 2.02
(_ISFILEOPEN "z:\\temp\\XlsTest.xlsx").....1719 / 1.67
(_ISFILEOPEN "z:\\temp\\XlsTest.xlsx").....1734 / 1.66
(_FILEOPEN-P "z:\\temp\\XlsTest.xlsx").....2875 / 1
(_FILEOPEN-P "z:\\temp\\XlsTest.xlsx").....2875 / 1 <slowest>