吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1085|回复: 7
收起左侧

[讨论] 如何让易语言支持Unicode

[复制链接]
hdxzd12 发表于 2024-4-8 21:55
主要是用于枚举文件
部分文件名中的Unicode字符会变成一个?如图所示
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

红尘旧梦i 发表于 2024-4-8 22:10
【扩展界面支持库一Ex】3.9.408  2024-04-08更新
https://bbs.125.la/forum.php?mod=viewthread&tid=14729664
(出处: 精易论坛)
核心库你是别想用U了,要么直接换C++
 楼主| hdxzd12 发表于 2024-4-8 22:14
红尘旧梦i 发表于 2024-4-8 22:10
【扩展界面支持库一Ex】3.9.408  2024-04-08更新
https://bbs.125.la/forum.php?mod=viewthread&tid=14729 ...

关键就是这个东西我下载不了
爱飞的猫 发表于 2024-4-8 23:45

用于枚举文件

使用对应的 Unicode API

如果你需要渲染到界面(如编辑框),你需要获取对应的控件句柄并调用对应的方法通知更改,例如 SetWindowTextWSendMessageW

这个问题是易语言的局限性导致的,语言设计之初就没有考虑过 Unicode 支援。

你好,再见 发表于 2024-4-9 00:41
用W类型api自己写,当然这就一点也不易了
功能复杂的话不建议写下去,易语言核心库是完全不支持unicode的
 楼主| hdxzd12 发表于 2024-4-9 06:39
爱飞的猫 发表于 2024-4-8 23:45
[md]> 用于枚举文件

使用对应的 Unicode API

是不是这样
[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)
返回 (取数组成员数 (文件数组))

点评

看起来没毛病,但我也没测试  发表于 2024-4-9 07:03
鹏路翱翔 发表于 2024-4-9 08:26
使用高级表格来显示吧,也不影响软件效果,高级表格是支持Unicode的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表