易语言读取编辑框指定行数内容到另一个编辑框
作者:僧豆
.版本 2
.支持库 iconv
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
编辑框1.内容 = 编码_Utf8到Ansi (读入文件 (“C:\Users\admin\Desktop\” + “测试1.txt”))
.子程序 _按钮1_被单击
.局部变量 局_提取数量, 整数型
.局部变量 局_原始内容, 文本型
.局部变量 局_内容数组, 文本型, , "0"
.局部变量 局_提取内容, 文本型
.局部变量 局_剩余内容, 文本型
.局部变量 局_源文件路径, 文本型
.局部变量 局_实际总行数, 整数型
.局部变量 局_计次, 整数型
.局部变量 局_保存结果, 逻辑型
.局部变量 局_新内容, 字节集
' 1. 读取提取数量并验证
局_提取数量 = 到整数 (编辑框3.内容)
.如果真 (局_提取数量 ≤ 0)
信息框 (“请输入大于0的提取数量”, 0, “提示”, )
返回 ()
.如果真结束
' 2. 读取编辑框1内容并验证
局_原始内容 = 编辑框1.内容
.如果真 (局_原始内容 = “”)
信息框 (“编辑框1无内容可提取”, 0, “提示”, )
返回 ()
.如果真结束
' 3. 定义源文件路径
局_源文件路径 = 取运行目录 () + “\测试1.txt”
' 4. 分割内容为行数组
局_内容数组 = 分割文本 (局_原始内容, #换行符, )
局_实际总行数 = 取数组成员数 (局_内容数组)
' 5. 处理提取数量超过实际行数的情况
.如果 (局_提取数量 > 局_实际总行数)
局_提取数量 = 局_实际总行数
信息框 (“提取数量超过实际行数,将提取全部内容”, 0, “提示”, )
.否则
.如果结束
' 6. 提取指定数量内容到编辑框2
局_提取内容 = “”
.计次循环首 (局_提取数量, 局_计次)
.如果真 (局_计次 > 1)
局_提取内容 = 局_提取内容 + #换行符
.如果真结束
局_提取内容 = 局_提取内容 + 局_内容数组 [局_计次]
.计次循环尾 ()
编辑框2.内容 = 局_提取内容
' 7. 计算剩余内容
局_剩余内容 = “”
.计次循环首 (局_实际总行数 - 局_提取数量, 局_计次)
.如果真 (局_计次 > 1)
局_剩余内容 = 局_剩余内容 + #换行符
.如果真结束
局_剩余内容 = 局_剩余内容 + 局_内容数组 [局_计次 + 局_提取数量]
.计次循环尾 ()
' 8. 用剩余内容更新源文件
局_保存结果 = 写到文件 (局_源文件路径, 到字节集 (编码转换 (到字节集 (局_剩余内容), #编码_GBK, #编码_UTF_8, )))
.如果真 (局_保存结果 = 假)
信息框 (“源文件更新失败!”, 0, “错误”, )
返回 ()
.如果真结束
' 9. 重新读取源文件并更新编辑框1
局_新内容 = 读入文件 (局_源文件路径)
.如果真 (局_新内容 = { })
信息框 (“重新读取源文件失败!”, 0, “错误”, )
返回 ()
.如果真结束
编辑框1.内容 = 编码_Utf8到Ansi (读入文件 (“C:\Users\admin\Desktop\” + “测试1.txt”))
' 操作完成提示
调试输出 (“提取完成,已提取” + 到文本 (局_提取数量) + “行内容”)
信息框 (“提取完成,已更新源文件”, 0, “提示”, )
' 10. 编辑框2的新内容写入到合同文件中
写到文件 (“C:\Users\admin\Desktop\” + “测试2.txt”, 到字节集 (编码转换 (到字节集 (编辑框2.内容), #编码_GBK, #编码_UTF_8, )))