[Asm] 纯文本查看 复制代码
.版本 2
.子程序 文件_枚举W, 整数型, 公开, 枚举某个目录下的指定类型文件,成功返回文件数组。
.参数 欲寻找的目录, 字节集
.参数 欲寻找的文件名, 字节集, , *为寻找全部文件
.参数 文件数组, 字节集, 参考 可空 数组
.参数 是否带路径, 逻辑型, 可空, 为真时返回文件为绝对路径
.参数 是否遍历子目录, 逻辑型, 可空, 为真时文件数组不主动清空
.局部变量 szPath, 字节集
.局部变量 FileName, 字节集
.局部变量 hFind, 整数型
.局部变量 FindFileData, WIN32_FIND_DATAW
.局部变量 cFileName, 字节集
.局部变量 bRes, 逻辑型
szPath = 删除Unicode结尾空白字节 (欲寻找的目录)
.如果真 (取字节集右边 (szPath, 2) ≠ { 92, 0 })
szPath = szPath + { 92, 0 }
.如果真结束
FileName = 删除Unicode结尾空白字节 (欲寻找的文件名)
.如果真 (是否遍历子目录 = 假)
清除数组 (文件数组)
.如果真结束
hFind = FindFirstFileW (szPath + FileName + { 0, 0 }, FindFileData)
.如果真 (hFind = -1)
返回 (0)
.如果真结束
.循环判断首 ()
cFileName = 到字节集 (FindFileData.cFileName)
cFileName = 删除Unicode结尾空白字节 (cFileName)
.如果真 (wcscmp (cFileName + { 0, 0 }, { 46, 0, 0, 0 }) ≠ 0 且 wcscmp (cFileName + { 0, 0 }, { 46, 0, 46, 0, 0, 0 }) ≠ 0)
.如果真 (是否遍历子目录 且 位与 (FindFileData.dwFileAttributes, 16) ≠ 0)
文件_枚举W (szPath + cFileName + { 92, 0 }, 欲寻找的文件名, 文件数组, 是否带路径, 是否遍历子目录)
.如果真结束
.如果真 (位与 (FindFileData.dwFileAttributes, 32) ≠ 0)
.如果 (是否带路径)
加入成员 (文件数组, szPath + cFileName + { 0, 0 })
.否则
加入成员 (文件数组, cFileName + { 0, 0 })
.如果结束
.如果真结束
.如果真结束
bRes = FindNextFileW (hFind, FindFileData)
.循环判断尾 (bRes)
FindClose (hFind)
返回 (取数组成员数 (文件数组))