Следующий код NewLISP показывает мне атрибуты файлов файлов под Win32. Тем не менее, некоторые из найденных имен имеют китайские символы в имени. Когда функция GetFileAttributesA встречает их, она дает мне -1 для атрибута. Я посмотрел на GetFileAttributesW, но не знаю, как сделать содержимое fname доступным для функции в форме, которую она распознает.
Как справиться с этой ситуацией? (Я готов рассмотреть возможность использования другого языка)
(define (get-archive-flag file-name)
(if (not GetFileAttributesA)
(begin
(import "kernel32.DLL" "GetFileAttributesA")
)
)
(setq fname file-name file-attrib (GetFileAttributesA (address fname)))
(append fname " " ( string file-attrib))
)
; walks a disk directory and prints all path-file names
;
(define (show-tree dir)
(if (directory dir)
(dolist (nde (directory dir))
(if (and (directory? (append dir "/" nde))
(!= nde ".") (!= nde ".."))
(show-tree (append dir "/" nde))
(println (get-archive-flag (append dir "/" nde)))
)
)
)
)
(show-tree "z:\\working files\\Cathy")