注册 登录
编程论坛 VFP论坛

如何实现从文本文件结尾开始逐行读取数据

haoduoyu 发布于 2021-12-26 09:20, 1860 次点击
文本文件数据是按时间排序的csv文件,现在是用APPEND FROM,再加上条件判断。
其实有用的数据都在最后几行。
7 回复
#2
sdta2021-12-26 10:59
文本文件在那
#3
haoduoyu2021-12-26 11:57
只有本站会员才能查看附件,请 登录

这个是样本
#4
sdta2021-12-26 13:01
CSV格式文件实际上就是一个标准格式的文本文件,只是扩展名不是TXT而已,除了第一行标题名(也就是VFP中所说的字段名),可以用ALINES()解析文本文件内容。下面是VFP9代码
lcStr = FILETOSTR("C:\Users\Administrator\Desktop\sh600009\sh600009.csv")
ALINES(laStr, lcStr, CHR(13) + CHR(10))
LIST MEMORY LIKE laStr

看下显示的结果就知道如何获取自己所需的内容了
#5
haoduoyu2021-12-26 21:22
我现在使用append from 加条件。以为从最后往前面逐行读取可以更快速一点。这样把整个文件读进来,在逐行处理估计也不会更快把。
#6
sdta2021-12-26 22:26
以下是引用haoduoyu在2021-12-26 21:22:16的发言:

我现在使用append from 加条件。以为从最后往前面逐行读取可以更快速一点。这样把整个文件读进来,在逐行处理估计也不会更快把。

你不试怎么会知道速度不快。
#7
吹水佬2021-12-27 08:31
如果文件大小没有超过数组的限制,用数组来处理应该较快
#8
厨师王德榜2021-12-27 13:38
我处理过类似的问题,大致场景是这样,
流水线上的机器会把流水状态,写入到存储上,存储格式是一个txt.
每次写入时,会追加在txt最后,格式是:时间戳 ... 内容 ... + 回车符
存储设备是一个网络硬盘,支持远程读取.
工作人员每周三,启动程序,通过特定端口读取存储上TXT的内容.
每次程序在读取时,实际只需要最后的内容,(确切的说,是只取上周三到本周二之间的内容),因为显然前面的已经上次读取过了.犯不着浪费效率重复去读取.

实施过程是这样(这里只讲过程,代码记不清楚了)
1,打开txt文件.
2,移动指针到文件尾.
3,向上取一行(当前位置向上取,直到遇到回车符止)
4,判断取到的一行中,时间戳是不是在 上周三到本周二之间?
  如果是,装入数组,继续向上取.
  如果不是,终止向上读取,关闭文件.把数组内容装入dbf.
记得用到了fopen() ,fclose() ,FGETS() 等函数,自己去查一下帮助文件.
1