ps1989 发表于 2020-3-16 21:46

[已解决]易语言自学者,请老师们搭把手纠错改进提携一下,写到文件与写入文本

本帖最后由 ps1989 于 2020-4-12 21:38 编辑

已解决结贴地址:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1135894&page=1&extra=#pid30772884
自学了一些课程,用易语言写了个软件日志模块,思路是这样的:将执行内容可视化呈现再编辑框内并将每次执行的内容日志保存到日志文件夹内。
老师大佬们给提携下或者纠错改进下,让我这个没老师的孩子成长的快些!谢谢!

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

显示日志 (“软件启动成功!”)
显示日志 (“接下来的内容都将被日志记录,并保存至目录下的《日志文件》文件夹!”)
日志记录 (“软件被开启!”)

.子程序 日志记录
.参数 记录内容, 文本型
.局部变量 存储路径, 文本型
.局部变量 分隔符, 文本型

创建目录 (取运行目录 () + “\日志文件”)
存储路径 = 取运行目录 () + “\日志文件\” + 时间到文本 (取现行时间 (), 2) + “-日志.txt”
分隔符 = “------------------------------------------------------------------------------”
写到文件 (存储路径, 到字节集 (到文本 (读入文件 (存储路径)) + #换行符 + 分隔符 + #换行符 + 时间到文本 (取现行时间 (), 3) + #换行符 + 记录内容))


.子程序 显示日志
.参数 日志内容, 文本型

.如果 (编辑框1.内容 ≠ “”)
    编辑框1.加入文本 (#换行符 + #换行符 + 时间到文本 (取现行时间 (), 2) + “ ” + 时间到文本 (取现行时间 (), 3) + #换行符 + #换行符 + 日志内容)
.否则
    编辑框1.加入文本 (时间到文本 (取现行时间 (), 2) + “ ” + 时间到文本 (取现行时间 (), 3) + #换行符 + #换行符 + 日志内容)
.如果结束


.子程序 _按钮1_被单击

显示日志 (“按钮1 被单击!”)
日志记录 (“按钮1 被单击!”)

.子程序 _按钮2_被单击

显示日志 (“按钮2 被单击!”)
日志记录 (“按钮2 被单击!”)

.子程序 _按钮3_被单击

显示日志 (“按钮3 被单击!”)
日志记录 (“按钮3 被单击!”)

.子程序 _按钮4_被单击

显示日志 (“按钮4 被单击!”)
日志记录 (“按钮4 被单击!”)

.子程序 __启动窗口_将被销毁

日志记录 (“软件手动关闭!”)

.子程序 __启动窗口_位置被改变

日志记录 (“位置被移动”)

ps1989 发表于 2020-3-16 21:53

同时想问下这样的日志模块用写到文件好,还是写入文本好点

xiaohui888 发表于 2020-3-16 23:07

写到文件会直接覆盖原来的文件,如果你每次增加数据都写到文件,最后得到的就是最后写到文件的数据。如果你用写入文本就不一样了,前提是写入文本需要打开文本。写到文本可以写入在指定位置,默认是文本尾写入。写入文本不会直接覆盖原来的数据,更利于记录。

longsui48 发表于 2020-3-16 23:29

日志一般都是做成每日一存的 方便调试和查看
文本框可以读取内容后显示 一般不直接写在编辑框内
日志以存为主 当然你可以设置清空30天以前的日志减少日志目录的大小

ps1989 发表于 2020-3-17 11:17

xiaohui888 发表于 2020-3-16 23:07
写到文件会直接覆盖原来的文件,如果你每次增加数据都写到文件,最后得到的就是最后写到文件的数据。如果你 ...

我写到文件()里有先读入文件,这样会增加软件负载吗?还有,写入文本每次都是在文本第一行写入,之前的都被顶下去了,也就是说之前的都在下一行,新的都在第一行,请问怎么控制写入的位置?

ps1989 发表于 2020-3-17 11:21

longsui48 发表于 2020-3-16 23:29
日志一般都是做成每日一存的 方便调试和查看
文本框可以读取内容后显示 一般不直接写在编辑框内
日志以存 ...

我这样写是每日一存,只是关于读入和直接写入有什么区别和好处能说下吗?让我学习下,还有如何写清除多少天的日志?

longsui48 发表于 2020-3-17 14:48

ps1989 发表于 2020-3-17 11:21
我这样写是每日一存,只是关于读入和直接写入有什么区别和好处能说下吗?让我学习下,还有如何写清除多少 ...

直接读入的好处是 如果你写的软件出错了 文本还是保存的 下次能直接读取 日志文件不会丢失
写入编辑框后在写入文件 可能因为编辑框的bug或者软件出错而丢失日志
第三种方法就是 同时写入编辑框和写入文件 也可以
日志的主要功能是存 记住是存 不是显示 所以我推荐的是先存入文本后 在显示 方法有很多种 记住他的关键是什么就行
清楚更简单 每天12点读取今天的日期 遍历一下日志文件夹 判断是否有日期和今天超过xx天后删除就行

ps1989 发表于 2020-3-17 16:07

longsui48 发表于 2020-3-17 14:48
直接读入的好处是 如果你写的软件出错了 文本还是保存的 下次能直接读取 日志文件不会丢失
写入编辑框后 ...

{:1_893:}受教了!谢谢大佬,就是还不太熟悉怎么写清除的代码,理论大致能懂

longsui48 发表于 2020-3-17 16:23

ps1989 发表于 2020-3-17 16:07
受教了!谢谢大佬,就是还不太熟悉怎么写清除的代码,理论大致能懂
.版本 2

.程序集 程序集1
.程序集变量 mLogArr, 文本型, , "0"

.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行

main ()
返回 (0)' 可以根据您的需要返回任意数值

.子程序 main

遍历日志文件 ()
判断日期 ()

.子程序 遍历日志文件

文件_枚举 (“.\Logs\”, “*.txt”, mLogArr, 真, , )

.子程序 判断日期
.局部变量 i, 整数型
.局部变量 txtName, 文本型
.局部变量 timeInterval, 整数型

.计次循环首 (取数组成员数 (mLogArr), i)
    txtName = 文件_取文件名 (mLogArr , 假)' 20200216
    timeInterval = 到整数 (取时间间隔 (取现行时间 (), 到时间 (txtName + “000000”), #日))
    .如果真 (timeInterval > 30)
      文件_删除 (mLogArr )
    .如果真结束

.计次循环尾 ()

大致是这样 没调试 有bug的话自己修一下
模块是精易模块

webstz 发表于 2020-3-17 18:00

longsui48 发表于 2020-3-16 23:29
日志一般都是做成每日一存的 方便调试和查看
文本框可以读取内容后显示 一般不直接写在编辑框内
日志以存 ...

赞成你说的
页: [1] 2
查看完整版本: [已解决]易语言自学者,请老师们搭把手纠错改进提携一下,写到文件与写入文本