|

分享源码
界面截图: |
|
是否带模块: |
- |
备注说明: |
- |
版本 2
.支持库 EThread
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
许可证 = 创建进入许可证 ()
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 _临时子程序
.局部变量 数据, 字节集
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 扫描可用编码, , , 返回可以转换的编码列表
.参数 可转换编码, 可转换编码, 参考 数组
.局部变量 循环1, 整数型
进入许可区 (许可证)
重定义数组 (编码表, 假, 0)
子程序起始 ()
重定义数组 (可转换编码, 假, 取数组成员数 (编码表))
.计次循环首 (取数组成员数 (可转换编码), 循环1)
可转换编码 [循环1].编码名称 = 编码表 [循环1]
可转换编码 [循环1].引用编码名称 = 取文本注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].编码名称 + “\AliasForCharset”, “”)
.如果真 (可转换编码 [循环1].引用编码名称 = “”)
可转换编码 [循环1].页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].编码名称 + “\Codepage”, 0)
可转换编码 [循环1].网络编码页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].编码名称 + “\InternetEncoding”, 0)
.如果真结束
.如果真 (可转换编码 [循环1].引用编码名称 ≠ “”)
可转换编码 [循环1].页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].引用编码名称 + “\Codepage”, 0)
可转换编码 [循环1].网络编码页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].引用编码名称 + “\InternetEncoding”, 0)
.如果真结束
.计次循环尾 ()
退出许可区 (许可证)
.子程序 子程序起始
.局部变量 打开注册表项句柄, 整数型
.局部变量 项索引, 整数型
.局部变量 项索引1, 字节集
.局部变量 数据缓冲区, 字节集
.局部变量 缓冲区, 整数型
.局部变量 数据缓冲区长度, 整数型
.局部变量 UFFER_SIZE, 整数型
.局部变量 修改时间, 文件时间_
.局部变量 项类名, 字节集
.局部变量 项类名长度, 整数型
.局部变量 项目文本, 文本型, , , 项目位置
.局部变量 sy, 整数型
UFFER_SIZE = 255
缓冲区 = UFFER_SIZE
项类名长度 = UFFER_SIZE
打开注册表项句柄 = 0
.如果 (打开注册表项_ (#HKEY_CLASSES_ROOT, 到字节集 (“MIME\Database\Charset”) + { 0 }, 打开注册表项句柄) = 0)
项索引1 = 取空白字节集 (UFFER_SIZE)
项类名 = 取空白字节集 (UFFER_SIZE)
项索引 = 0
.判断循环首 (枚举注册项_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 项类名, 项类名长度, 修改时间) ≠ #ERROR_NO_MORE_ITEMS)
项目文本 = 取字节集数据 (项索引1, #文本型, )
加入成员 (编码表, 项目文本)
sy = 取数组成员数 (编码表)
项索引 = 项索引 + 1
项索引1 = 取空白字节集 (UFFER_SIZE)
缓冲区 = UFFER_SIZE
子程序下级项目 (项目文本, sy)
.判断循环尾 ()
关闭注册表项_ (打开注册表项句柄)
.否则
信息框 (“ Error while calling RegOpenKey”, 0, )
.如果结束
.子程序 子程序下级项目
.参数 文本参数, 文本型
.参数 索引数值, 整数型
.局部变量 打开注册表项句柄, 整数型
.局部变量 项索引, 整数型
.局部变量 项索引1, 字节集
.局部变量 数据缓冲区, 字节集
.局部变量 缓冲区, 整数型
.局部变量 数据缓冲区长度, 整数型
.局部变量 UFFER_SIZE, 整数型
.局部变量 修改时间, 文件时间_
.局部变量 项类名, 字节集
.局部变量 项类名长度, 整数型
.局部变量 项目文本, 文本型
.局部变量 sy, 整数型
.局部变量 n1, 整数型
UFFER_SIZE = 255
缓冲区 = UFFER_SIZE
项类名长度 = UFFER_SIZE
打开注册表项句柄 = 0
.如果真 (打开注册表项_ (#HKEY_CURRENT_USER, 到字节集 (文本参数) + { 0 }, 打开注册表项句柄) = 0)
项索引1 = 取空白字节集 (UFFER_SIZE)
项类名 = 取空白字节集 (UFFER_SIZE)
项索引 = 0
.判断循环首 (枚举注册项_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 项类名, 项类名长度, 修改时间) ≠ #ERROR_NO_MORE_ITEMS)
项目文本 = 取字节集数据 (项索引1, #文本型, )
加入成员 (编码表, 项目文本)
项索引 = 项索引 + 1
项索引1 = 取空白字节集 (UFFER_SIZE)
缓冲区 = UFFER_SIZE
子程序下级项目 (文本参数 + “\” + 项目文本, sy)
.判断循环尾 ()
.如果真 (枚举注册项_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 项类名, 项类名长度, 修改时间) = #ERROR_NO_MORE_ITEMS)
.如果 (打开注册表项_ (#HKEY_CURRENT_USER, 到字节集 (文本参数) + { 0 }, 打开注册表项句柄) = 0)
项索引1 = 取空白字节集 (UFFER_SIZE)
数据缓冲区 = 取空白字节集 (UFFER_SIZE)
缓冲区 = UFFER_SIZE
数据缓冲区长度 = UFFER_SIZE
.判断循环首 (枚举注册项值_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 0, 数据缓冲区, 数据缓冲区长度) ≠ #ERROR_NO_MORE_ITEMS)
.如果真 (数据缓冲区长度 > 0)
加入成员 (编码表, 取字节集数据 (项索引1, #文本型, ))
.如果真结束
项索引 = 项索引 + 1
项索引1 = 取空白字节集 (UFFER_SIZE)
数据缓冲区 = 取空白字节集 (UFFER_SIZE)
缓冲区 = UFFER_SIZE
数据缓冲区长度 = UFFER_SIZE
.判断循环尾 ()
关闭注册表项_ (打开注册表项句柄)
.否则
信息框 (“ Error while calling RegOpenKey”, 0, )
.如果结束
.如果真结束
.如果真结束
.子程序 编码转换_GB2312扩展, 字节集, 公开
.参数 数据流, 字节集
.参数 转换前编码, 文本型
.参数 转换后编码, 文本型
.局部变量 转前对象, 对象
.局部变量 转前变体型, 变体型
.局部变量 转GB2312, 文本型
.局部变量 转后对象, 对象
.局部变量 转后变体型, 变体型
.局部变量 字节集, 字节集
' 使用本子程序前,一定要确认,您转换的编码是本机器支持的编码
' 想知道本机器都支持什么编码,可以使用 扫描可用编码 程序扫描一下
转前变体型.赋值 (数据流, ) ' 将数据流赋值给变体
转前对象.创建 (“adodb.stream”, ) ' 创建转前数据流处理对象
转前对象.写属性 (“Type”, 1) ' Type是执行类型,现在Type=1,表示我们要处理或读写二进制数据
转前对象.写属性 (“Mode”, 3) ' Mode是返回模式
转前对象.方法 (“Open”, ) ' 打开对象
' Type和Mode被锁定,不可以更改
转前对象.方法 (“Write”, 转前变体型) ' 写入二进制数据流
转前对象.写属性 (“Position”, 0) ' Position数据返回指针,写上了0就代表关闭了数据返回通道
' 这时Type和Mode解锁,并且预处理数据
转前对象.写属性 (“Type”, 2) ' Type执行类型,现在Type=2,表示我们要处理或读写字符流
转前对象.写属性 (“Charset”, 转换前编码) ' 提供从什么编码转换成字符流(即GB2312)
转GB2312 = 转前对象.文本方法 (“ReadText”, ) ' 读出字符流
转前对象.方法 (“Close”, )
转后对象.创建 (“adodb.stream”, ) ' 创建转后数据流处理对象
转后对象.写属性 (“Charset”, 转换后编码) ' 提供从字符流(GB2312)转换成什么编码
转后对象.写属性 (“Type”, 2) ' Type执行类型,现在Type=2,表示我们要处理或读写字符流
转后对象.写属性 (“Mode”, 3) ' Mode是返回模式
转后对象.方法 (“Open”, ) ' 打开对象
' 这时Type和Mode是锁定状态,不可以更改数据
转后对象.方法 (“WriteText”, 转GB2312)
转后对象.写属性 (“Position”, 0) ' Position表示数据指针,如果填写0表示关闭返回通道
' 这时Type和Mode被解锁
转后对象.写属性 (“Type”, 1) ' Type执行类型,现在Type=1,表示我们要处理或读写数据流
转后变体型 = 转后对象.通用方法 (“Read”, ) ' 读出数据流
字节集 = 转后变体型.取字节集 ()
转后对象.方法 (“Close”, )
返回 (字节集)
bm.zip
(4.74 KB, 下载次数: 25)
.
|
评分
-
查看全部评分
|