次の 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")