.版本 2
.支持库 iext
.支持库 spec
.支持库 EThread
.程序集 窗口程序集_启动窗口
.程序集变量 许可证, 整数型
.程序集变量 结果文件号, 整数型
.程序集变量 线程数, 整数型
.程序集变量 停止标志, 逻辑型
.程序集变量 当前扫描目录, 文本型, , , ' 新增全局变量传递线程参数
.程序集变量 文件路径, 文本型
.程序集变量 查找停止标记, 逻辑型
.程序集变量 线程句柄数组, 整数型, , "0"
.程序集变量 返回目录数组, 文本型, , "0"
.程序集变量 线程参数数组, 整数型, , "0"
.程序集变量 线程句柄, 整数型
.子程序 __启动窗口_创建完毕
花名花见.皮肤加载 (6, , , , , )
通用对话框_保存.初始目录 = 编辑框_目录.内容
' 结果文件号 = 打开文件 (“文件列表.txt”, #重写, ) ' 创建结果文件
' 关闭文件 (结果文件号) ' 先关闭,后续追加写入
停止标志 = 假
编辑框_目录.内容 = 到文本 (读入文件 (“C:\地址.ini”))
超级列表框_数据显示.始终显示选择项 = 真
.子程序 _按钮_查找文件_被单击
.局部变量 初始目录, 文本型
.局部变量 当前目录, 文本型
.局部变量 i, 整数型
.局部变量 目录路径, 文本型
.局部变量 内存指针, 整数型
.局部变量 所有线程完成, 逻辑型
.局部变量 j, 整数型
.局部变量 等待计数, 整数型
.局部变量 文本, 文本型
文本 = 文本_删除空行 (编辑框_过滤器.内容)
.如果真 (文本 = “”)
信息框 (“未输入需要查找的文件名!”, 0, , )
返回 ()
.如果真结束
初始目录 = 编辑框_目录.内容
.如果真 (目录_是否存在 (初始目录) = 假)
信息框 (“目录不存在!”, 0, , )
返回 ()
.如果真结束
标签_搜索完成.标题 = “文件枚举中,请稍等》》》”
标签_搜索完成.文本颜色 = #红色
列表框1.清空 ()
' 初始目录 = “E:\SynologyDrive\”
.如果真 (目录_是否存在 (初始目录) ≠ 真)
调试输出 (“根目录不存在:” + 初始目录)
返回 ()
.如果真结束
许可证 = 创建进入许可证 ()
目录_枚举子目录 (初始目录, 返回目录数组, 真, )
.计次循环首 (取数组成员数 (返回目录数组), i)
目录路径 = 返回目录数组 [i]
' 为每个线程参数申请内存并复制文本
内存指针 = 申请内存 (取文本长度 (目录路径) × 2 + 2, 真) ' Unicode字符需要2字节
写到内存 (目录路径, 内存指针, )
加入成员 (线程参数数组, 内存指针) ' 存储指针用于后续释放
线程句柄 = 0
线程_启动 (&子程序_枚举文件, 内存指针, 线程句柄)
加入成员 (线程句柄数组, 线程句柄)
.计次循环尾 ()
.判断循环首 (等待计数 < 100) ' 最多等待10秒(100×100ms)
所有线程完成 = 真
.计次循环首 (取数组成员数 (线程句柄数组), j)
.如果真 (线程_取状态 (线程句柄数组 [j]) ≠ 0) ' 线程仍在运行
所有线程完成 = 假
.如果真结束
.计次循环尾 ()
.如果真 (所有线程完成)
跳出循环 ()
.如果真结束
程序_延时 (100, ) ' 等待100ms
等待计数 = 等待计数 + 1
.判断循环尾 ()
' 释放所有申请的内存
.计次循环首 (取数组成员数 (线程参数数组), j)
释放内存 (线程参数数组 [j])
.计次循环尾 ()
删除进入许可证 (许可证)
.子程序 子程序_枚举文件
.参数 目录路径指针, 整数型
.局部变量 返回数量, 整数型
.局部变量 模糊查找数组, 文本型
.局部变量 查找到的位置, 整数型
.局部变量 一级目录, 文本型, , "0"
.局部变量 目录路径, 文本型
.局部变量 文件全路径, 文本型, , "0"
.局部变量 i, 整数型
' 安全地从指针读取文本
目录路径 = 指针到文本 (目录路径指针)
.如果真 (目录_是否存在 (目录路径) ≠ 真)
调试输出 (“目录不存在:” + 目录路径)
返回 ()
.如果真结束
.如果真 (选择框_模糊查找.选中 = 假)
文件_枚举 (目录路径, 编辑框_过滤器.内容 + “.txt”, 文件全路径, 真, 假, 真)
' 安全地从指针读取文本
.如果真 (停止标志)
标签_搜索完成.标题 = “检索已暂停!!!”
标签_搜索完成.文本颜色 = #紫色
线程_销毁 (线程句柄)
返回 ()
.如果真结束
进入许可区 (许可证)
.计次循环首 (取数组成员数 (文件全路径), i)
调试输出 (文件全路径 [i])
列表框1.加入项目 (文件全路径 [i], )
.计次循环尾 ()
退出许可区 (许可证)
标签_搜索完成.标题 = “检索已完成!!!”
标签_搜索完成.文本颜色 = #绿色
.如果真结束
.如果真 (选择框_模糊查找.选中 = 真)
按钮_查找文件.禁止 = 真
返回数量 = 文件_枚举 (目录路径, “*.txt”, 文件全路径, 真, 假, 真)
.计次循环首 (取数组成员数 (文件全路径), i)
程序_延时 (1, )
.如果真 (停止标志 = 真)
标签_搜索完成.标题 = “检索已暂停!!!”
标签_搜索完成.文本颜色 = #紫色
按钮_查找文件.禁止 = 假
线程_销毁 (线程句柄)
返回 ()
.如果真结束
模糊查找数组 = 文本_倒取出中间文本 (文件全路径 [i], “.txt”, “ED\”, , )
查找到的位置 = 文本_寻找文本 (模糊查找数组, 到大写 (编辑框_过滤器.内容), , )
.如果真 (查找到的位置 ≠ -1)
列表框1.加入项目 (文件全路径 [i], )
.如果真结束
.计次循环尾 ()
标签_搜索完成.标题 = “检索已完成!!!”
标签_搜索完成.文本颜色 = #绿色
按钮_查找文件.禁止 = 假
.如果真结束
.子程序 _按钮_停止_被单击
停止标志 = 真
.子程序 __启动窗口_将被销毁
停止标志 = 真
.判断循环首 (线程数 > 0) ' 等待所有线程退出
程序_延时 (100)
.判断循环尾 ()
退出许可区 (许可证)
写到文件 (“C:\地址.ini”, 到字节集 (编辑框_目录.内容))
花名花见.卸载皮肤 (真, )
.子程序 _编辑框_过滤器_放开某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型
.如果真 (键代码 = #回车键)
_按钮_查找文件_被单击 ()
.如果真结束
.子程序 _列表框1_列表项被选择
.局部变量 文件内容, 文本型
.局部变量 文件号, 整数型
.局部变量 行数组, 文本型, , "0"
.局部变量 列数组, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 A, 整数型
超级列表框_数据显示.全部删除 ()
' 确定需要加入的位置
文件路径 = 列表框1.取项目文本 (列表框1.现行选中项)
文件号 = 打开文件 (文件路径, , )
文件内容 = 读入文本 (文件号, )
列数组 = 分割文本 (文件内容, #换行符, )
关闭文件 (文件号)
标签_出货数量.标题 = “已出货 0 套”
' 导入每列数据
.计次循环首 (取数组成员数 (列数组), i)
A = 超级列表框_数据显示.插入表项 (, 到文本 (超级列表框_数据显示.取表项数 () + 1), , , , )
' 应在循环内对每一行列进行分割
.如果真 (取文本长度 (列数组 [i]) > 0)
行数组 = 分割文本 (列数组 [i], “|”, ) ' ? 每行独立分割
.计次循环首 (取数组成员数 (行数组), j)
超级列表框_数据显示.置标题 (A, j, 行数组 [j])
.计次循环尾 ()
.如果真结束
.计次循环尾 ()
超级列表框数据统计 ()
.子程序 _超级列表框_数据显示_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 行索引, 整数型
.局部变量 客户名称, 文本型
.局部变量 颜色, 文本型
.局部变量 数量, 文本型
.局部变量 电压, 文本型
.局部变量 电流, 文本型
.局部变量 老化, 文本型
.局部变量 全检, 文本型
.局部变量 备注, 文本型
' 获取当前被双击的行索引(从1开始)
行索引 = 超级列表框_数据显示.现行选中项
.如果真 (行索引 ≠ -1)
' 获取该行第一列的内容(可根据需要改为其他列)
客户名称 = 超级列表框_数据显示.取标题 (行索引, 1)
颜色 = 超级列表框_数据显示.取标题 (行索引, 2)
数量 = 超级列表框_数据显示.取标题 (行索引, 3)
电压 = 超级列表框_数据显示.取标题 (行索引, 4)
电流 = 超级列表框_数据显示.取标题 (行索引, 5)
老化 = 超级列表框_数据显示.取标题 (行索引, 6)
全检 = 超级列表框_数据显示.取标题 (行索引, 7)
备注 = 超级列表框_数据显示.取标题 (行索引, 8)
编辑框_客户名称.内容 = 客户名称
编辑框_颜色.内容 = 颜色
编辑框_数量.内容 = 数量
编辑框_电流.内容 = 电流
.判断开始 (老化 = “是”)
组合框_老化.现行选中项 = 0
.判断 (老化 = “否”)
组合框_老化.现行选中项 = 1
.默认
.判断结束
.判断开始 (电压 = “24”)
组合框_电压.现行选中项 = 0
.判断 (电压 = “12”)
组合框_电压.现行选中项 = 1
.判断 (电压 = “48”)
组合框_电压.现行选中项 = 2
.判断 (电压 = “5”)
组合框_电压.现行选中项 = 3
.判断 (电压 = “ 3”)
组合框_电压.现行选中项 = 4
.默认
.判断结束
.判断开始 (全检 = “否”)
组合框_全检.现行选中项 = 0
.判断 (全检 = “是”)
组合框_全检.现行选中项 = 1
.默认
.判断结束
编辑框_备注.内容 = 备注
.如果真结束
超级列表框数据统计 ()
.子程序 _按钮_加入数据_被单击
.局部变量 a, 整数型
' 在最后一行插入新的条目
.如果 (编辑框_客户名称.内容 ≠ “” 且 编辑框_颜色.内容 ≠ “” 且 编辑框_数量.内容 ≠ “” 且 编辑框_电流.内容 ≠ “”)
a = 超级列表框_数据显示.插入表项 (, 到文本 (超级列表框_数据显示.取表项数 () + 1), , , , )
超级列表框_数据显示.置标题 (a, 1, 文本_删首尾空 (编辑框_客户名称.内容))
超级列表框_数据显示.置标题 (a, 2, 文本_删首尾空 (到大写 (编辑框_颜色.内容)))
超级列表框_数据显示.置标题 (a, 3, 文本_删首尾空 (编辑框_数量.内容))
.判断开始 (组合框_电压.现行选中项 = 0)
超级列表框_数据显示.置标题 (a, 4, “24”)
.判断 (组合框_电压.现行选中项 = 1)
超级列表框_数据显示.置标题 (a, 4, “12”)
.判断 (组合框_电压.现行选中项 = 2)
超级列表框_数据显示.置标题 (a, 4, “48”)
.判断 (组合框_电压.现行选中项 = 3)
超级列表框_数据显示.置标题 (a, 4, “5”)
.判断 (组合框_电压.现行选中项 = 4)
超级列表框_数据显示.置标题 (a, 4, “3”)
.默认
.判断结束
超级列表框_数据显示.置标题 (a, 5, 文本_删首尾空 (编辑框_电流.内容))
.判断开始 (组合框_老化.现行选中项 = 0)
超级列表框_数据显示.置标题 (a, 6, “是”)
.默认
组合框_老化.现行选中项 = 1
超级列表框_数据显示.置标题 (a, 6, “否”)
.判断结束
.判断开始 (组合框_全检.现行选中项 = 0)
超级列表框_数据显示.置标题 (a, 7, “否”)
.默认
组合框_老化.现行选中项 = 1
超级列表框_数据显示.置标题 (a, 7, “是”)
.判断结束
超级列表框_数据显示.置标题 (a, 8, 文本_删首尾空 (编辑框_备注.内容))
超级列表框_数据显示.置标题 (a, 9, 到文本 (取年份 (取现行时间 ())) + “年” + 到文本 (取月份 (取现行时间 ())) + “月” + 到文本 (取日 (取现行时间 ())) + “日”)
.否则
信息框 (“输入错误!”, 0, , )
.如果结束
编辑框_客户名称.内容 = “”
编辑框_备注.内容 = “”
超级列表框数据统计 ()
.子程序 _按钮_删除文件_被单击
.局部变量 行索引, 整数型
.局部变量 被选中的行数组, 整数型, , "0"
被选中的行数组 = 超级列表框_数据显示.取被选择表项 ()
.如果真 (取数组成员数 (被选中的行数组) > 0)
行索引 = 被选中的行数组 [1] ' 获取第一个被选中的行索引
超级列表框_数据显示.删除表项 (行索引)
.如果真结束
.子程序 _按钮_保存文件_被单击
.局部变量 保存到的路径, 文本型
.局部变量 对话框结果, 逻辑型
.如果真 (超级列表框_数据显示.取表项数 () = 0)
信息框 (“没有需要保存的内容!”, 0, , )
返回 ()
.如果真结束
通用对话框_保存.初始目录 = 编辑框_目录.内容 + “\”
' 若当前已有文件路径,则提取目录部分作为初始目录
.如果真 (取反 (文件路径 = “”))
保存到的路径 = 文本_取左边 (文件路径, “\”, -1, )
通用对话框_保存.初始目录 = 保存到的路径
通用对话框_保存.文件名 = 到大写 (编辑框_过滤器.内容)
.如果真结束
' 设置保存对话框属性
通用对话框_保存.类型 = 1 ' 1 表示保存文件
通用对话框_保存.过滤器 = “文本文件(*.txt)|*.txt”
' 通用对话框_保存.默认扩展名 = “txt”
' 显示对话框
对话框结果 = 通用对话框_保存.打开 ()
.如果真 (对话框结果)
' 用户点击“保存”后执行保存操作
文件路径 = 通用对话框_保存.文件名 ' 更新全局路径
超级列表框_保存到文件 (文件路径, 假) ' 假:覆盖写入
信息框 (“文件已成功保存!”, 0, , )
超级列表框_数据显示.全部删除 ()
标签_出货数量.标题 = “已出货 0 套”
.如果真结束
.子程序 超级列表框_保存到文件
.参数 目标路径, 文本型
.参数 是否追加, 逻辑型
.局部变量 文件号, 整数型
.局部变量 行索引, 整数型
.局部变量 列索引, 整数型
.局部变量 当前行文本, 文本型
' 打开文件(追加或新建)
.如果 (是否追加)
文件号 = 打开文件 (目标路径, #改写, ) ' 覆盖模式
.否则
文件号 = 打开文件 (目标路径, #重写, ) ' 创建模式
.如果结束
.如果真 (文件号 = 0)
信息框 (“文件创建失败!”, 0, , )
返回 ()
.如果真结束
' 写入数据行
.计次循环首 (超级列表框_数据显示.取表项数 (), 行索引)
当前行文本 = “”
.计次循环首 (超级列表框_数据显示.取列数 (), 列索引)
当前行文本 = 当前行文本 + 超级列表框_数据显示.取标题 (行索引 - 1, 列索引) + “|”
.计次循环尾 ()
写文本行 (文件号, 当前行文本)
.计次循环尾 ()
关闭文件 (文件号)
.子程序 _选择框_模糊查找_被单击
.判断开始 (选择框_模糊查找.选中 = 真)
按钮_停止查找.禁止 = 假
.默认
按钮_停止查找.禁止 = 真
.判断结束
.子程序 _按钮_停止查找_被单击
查找停止标记 = 真
.子程序 _选择框_选择_被单击
.如果 (选择框_选择.选中 = 假)
选择框_选择.标题 = “光源”
标签_颜色.标题 = “颜色:”
标签_电流.标题 = “电流(A)”
超级列表框_数据显示.置列标题 (5, “电流(A)”)
超级列表框_数据显示.置列标题 (2, “颜色”)
超级列表框_数据显示.置列宽 (2, 50)
超级列表框_数据显示.置列宽 (8, 210)
.否则
选择框_选择.标题 = “控制器”
标签_颜色.标题 = “控制器:”
超级列表框_数据显示.置列标题 (2, “控制器型号”)
超级列表框_数据显示.置列标题 (5, “协议”)
标签_电流.标题 = “协议:”
超级列表框_数据显示.置列宽 (2, 100)
超级列表框_数据显示.置列宽 (8, 160)
.如果结束
.子程序 _按钮_全部删除_被单击
超级列表框_数据显示.全部删除 ()
标签_出货数量.标题 = “已出货 0 套”
超级列表框数据统计 ()
.子程序 超级列表框数据统计
.局部变量 i, 整数型
.局部变量 数量文本, 文本型
.局部变量 总数, 双精度小数型
.局部变量 当前值, 双精度小数型
总数 = 0
.计次循环首 (超级列表框_数据显示.取表项数 (), i)
数量文本 = 超级列表框_数据显示.取标题 (i - 1, 3)
.如果真 (数量文本 ≠ “”)
当前值 = 到数值 (数量文本)
总数 = 总数 + 当前值
标签_出货数量.标题 = “已出货:” + 到文本 (总数) + “ 套”
.如果真结束
.计次循环尾 ()
只用易语言优化代码
最新发布