- .版本 2
- .支持库 commobj
- .支持库 iext
- .子程序 超级列表框_导入文本, , 公开
- .参数 参_超级列表框, 超级列表框
- .参数 参_文件路径, 文本型, 可空, 路径优先
- .参数 参_文本, 文本型, 可空, 路径为空时导入文本
- .参数 参_分隔符, 文本型, 可空, 默认"----"
- .参数 参_导入列数, 整数型, 可空, 默认1
- .参数 参_保留原先数据, 逻辑型, 可空, 默认为真
- .参数 参_总耗时, 整数型, 参考 可空
- .参数 参_是否有加密, 逻辑型, 可空
- .参数 参_构造耗时, 整数型, 参考 可空
- .局部变量 字节集, 快速字节集对象
- .局部变量 文本, 快速文本对象
- .局部变量 文本数组, 文本型, , "0"
- .局部变量 计次, 整数型
- .局部变量 单行文本, 文本型
- .局部变量 开始时间, 整数型
- .局部变量 原表项数, 整数型
- .局部变量 总数, 整数型
- .局部变量 已处理, 整数型
- .局部变量 内循环数, 整数型
- 开始时间 = 取启动时间 ()
- .如果真 (是否为空 (参_分隔符))
- 参_分隔符 = “----”
- .如果真结束
- .如果真 (参_导入列数 < 1)
- 参_导入列数 = 1
- .如果真结束
- .如果真 (参_文件路径 ≠ “”) ' 路径优先
- 文本.从文件读 (参_文件路径)
- .如果真结束
- .如果真 (参_文件路径 = “” 且 参_文本 ≠ “”)
- 文本.置文本 (参_文本)
- .如果真结束
- 文本数组 = 文本.分割文本 (#换行符, )
- 文本.清除文本 ()
- .如果真 (是否为空 (参_保留原先数据))
- 参_保留原先数据 = 真
- .如果真结束
- .如果真 (参_保留原先数据)
- 原表项数 = 参_超级列表框.取表项数 ()
- 字节集.添加 (参_超级列表框.表项)
- .如果真结束
- 总数 = 取数组成员数 (文本数组)
- 已处理 = 0
- .判断循环首 (已处理 < 总数)
- 内循环数 = 选择 (总数 - 已处理 < 10000, 总数 - 已处理, 10000) ' 分块处理 减少卡顿 或者可以多线程构造?思路而已...
- .计次循环首 (内循环数, 计次)
- .' 如果 (参_是否有加密)
- ' 单行文本 = 功能_动态解密 (文本数组 [计次])
- .否则
- 单行文本 = 文本数组 [已处理 + 计次]
- .如果结束
- 字节集.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } + 到字节集 (到文本 (已处理 + 计次 + 原表项数)) + { 0, 0 } + 超级列表框_表项字节集 (单行文本, 参_分隔符, 参_导入列数, ))
- .计次循环尾 ()
- 已处理 = 已处理 + 内循环数
- 处理事件 ()
- .判断循环尾 ()
- .' 计次循环首 (取数组成员数 (文本数组), 计次)
- .' 如果 (参_是否有加密)
- ' ' 单行文本 = 功能_动态解密 (文本数组 [计次])
- .否则
- ' 单行文本 = 文本数组 [计次]
- .如果结束
- ' 字节集.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } + 到字节集 (到文本 (计次 + 原表项数)) + { 0, 0 } + 超级列表框_表项字节集 (单行文本, 参_分隔符, 参_导入列数, ))
- .' 计次循环尾 ()
- 参_构造耗时 = 取启动时间 () - 开始时间
- 参_超级列表框.可视 = 假 ' 可视的话会耽误更多时间
- 参_超级列表框.禁止重画 ()
- 参_超级列表框.表项 = 字节集.取字节集 (, )
- 参_超级列表框.可视 = 真
- 参_超级列表框.允许重画 ()
- 字节集.清除字节集 ()
- 参_总耗时 = 取启动时间 () - 开始时间
- .子程序 超级列表框_表项字节集, 字节集, 公开
- .参数 参_文本, 文本型
- .参数 参_分隔符, 文本型
- .参数 参_列数, 整数型
- .参数 参_从第0列开始, 逻辑型, 可空
- .局部变量 局_数组, 文本型, , "0"
- .局部变量 局_计次, 整数型
- .局部变量 局_字节集, 字节集
- .局部变量 局_列数, 整数型
- ' 0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0
- ' 1,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0,
- ' 1,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0,
- ' 1,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0,
- ' 0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0
- ' 1,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0,
- ' 1,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0,
- ' 1,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,内容,0,0,
- 局_数组 = 分割文本 (参_文本, 参_分隔符, 参_列数)
- 局_列数 = 取数组成员数 (局_数组)
- .如果真 (局_列数 = 0)
- 返回 ({ })
- .如果真结束
- .计次循环首 (局_列数, 局_计次)
- 局_字节集 = 局_字节集 + { 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } + 到字节集 (局_数组 [局_计次]) + { 0, 0 }
- .计次循环尾 ()
- .如果真 (参_从第0列开始)
- 局_字节集 = { 0 } + 取字节集右边 (局_字节集, 取字节集长度 (局_字节集) - 1)
- .如果真结束
- 返回 (局_字节集)
复制代码
这样操作的好处就是直接字节集操作不需要每次都等易语言的控件刷新一次,也不用像虚表那样操作不了 |