易语言文件枚举W 修复各种问题

.版本 2 .支持库 spec .程序集 程序集1 .子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码 .局部变量 DATA, 字节集, , "0" .局部变量 i, 整数型 .局部变量 S, 字节集, , "3" S [1] = 编码_Ansi到Unicode (“*.otf”, ) S [2] = 编码_Ansi到Unicode (“*.ttc”, ) S [3] = 编码_Ansi到Unicode (“*.ttf”, ) 文件_枚举W_改 (编码_Ansi到Unicode (“D:\Fonts\超级字体整合包 XZ”, ), S, DATA, 真, 真) .' 计次循环首 (取数组成员数 (DATA), i) ' 调试输出 (编码_Unicode到Ansi (DATA [i])) .' 计次循环尾 () 调试输出 (取数组成员数 (DATA)) 返回 (0) ' 返回值被忽略。 .子程序 文件_枚举W_改, 整数型, 公开, 枚举某个目录下的指定类型文件,成功返回文件数组。 .参数 欲寻找的目录, 字节集 .参数 欲寻找的文件名, 字节集, 参考 数组, *为寻找全部文件 .参数 文件数组, 字节集, 参考 可空 数组 .参数 是否带路径, 逻辑型, 可空, 为真时返回文件为绝对路径 .参数 是否遍历子目录, 逻辑型, 可空, 为真时文件数组不主动清空 .局部变量 szPath, 字节集 .局部变量 FileName, 字节集 .局部变量 hFind, 整数型 .局部变量 FindFileData, WIN32_FIND_DATAW .局部变量 cFileName, 字节集 .局部变量 bRes, 逻辑型 .局部变量 i, 整数型 szPath = 删除Unicode结尾空白字节 (欲寻找的目录) .如果真 (取字节集右边 (szPath, 2) ≠ { 92, 0 }) szPath = szPath + { 92, 0 } .如果真结束 .如果真 (是否遍历子目录 = 假) 清除数组 (文件数组) .如果真结束 .计次循环首 (取数组成员数 (欲寻找的文件名), i) FileName = 删除Unicode结尾空白字节 (欲寻找的文件名 [i]) hFind = FindFirstFileW (szPath + FileName + { 0, 0 }, FindFileData) .如果真 (hFind ≠ #INVALID_HANDLE_VALUE) .循环判断首 () cFileName = 到字节集 (FindFileData.cFileName) cFileName = 删除Unicode结尾空白字节 (cFileName) .如果真 (cFileName ≠ { 46, 0 } 且 cFileName ≠ { 46, 0, 46, 0 }) .如果真 (位与 (FindFileData.dwFileAttributes, #FILE_ATTRIBUTE_ARCHIVE) ≠ 0) .判断开始 (是否带路径) 加入成员 (文件数组, szPath + cFileName + { 0, 0 }) .默认 加入成员 (文件数组, cFileName + { 0, 0 }) .判断结束 .如果真结束 .如果真结束 bRes = FindNextFileW (hFind, FindFileData) .循环判断尾 (bRes) .如果真结束 FindClose (hFind) bRes = 假 .计次循环尾 () hFind = FindFirstFileW (szPath + { 42, 0 } + { 0, 0 }, FindFileData) .如果真 (hFind = #INVALID_HANDLE_VALUE) 返回 (0) .如果真结束 .循环判断首 () cFileName = 到字节集 (FindFileData.cFileName) cFileName = 删除Unicode结尾空白字节 (cFileName) .如果真 (cFileName ≠ { 46, 0 } 且 cFileName ≠ { 46, 0, 46, 0 }) .如果真 (是否遍历子目录 且 位与 (FindFileData.dwFileAttributes, #FILE_ATTRIBUTE_DIRECTORY) ≠ 0) 文件_枚举W_改 (szPath + cFileName + { 92, 0 }, 欲寻找的文件名, 文件数组, 是否带路径, 是否遍历子目录) .如果真结束 .如果真结束 bRes = FindNextFileW (hFind, FindFileData) .循环判断尾 (bRes) FindClose (hFind) 返回 (取数组成员数 (文件数组)) .子程序 删除Unicode结尾空白字节, 字节集 .参数 欲被处理的字节集, 字节集 .局部变量 i, 整数型 .局部变量 len, 整数型 .局部变量 ptr, 整数型 .局部变量 short, 短整数型 .如果真 (取字节集长度 (欲被处理的字节集) < 2) 返回 ({ }) .如果真结束 ptr = 取指针_字节集型 (欲被处理的字节集) len = 取字节集长度 (欲被处理的字节集) ÷ 2 .计次循环首 (len, i) short = 指针_到短整数型_汇编 (ptr) .如果真 (short = 0) 跳出循环 () .如果真结束 ptr = ptr + 2 .计次循环尾 () .如果真 (i > len) 返回 (欲被处理的字节集) .如果真结束 返回 (取字节集左边 (欲被处理的字节集, (i - 1) × 2)) .子程序 取指针_字节集型, 整数型, 公开, 取到的是变量堆地址,和 取变量数据地址() 一样 .参数 字节集, 字节集, 参考 置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 15, 132, 3, 0, 0, 0, 131, 192, 8, 201, 194, 4, 0 }) 返回 (0) .子程序 指针_到短整数型_汇编, 短整数型, 公开 .参数 指针, 整数型 置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 }) ' mov eax , dword ptr [ebp+08h] ' mov eax , dword ptr [eax] ' leave ' retn 0004h 返回 (0)
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注