有会Delphi语言的朋友吗?求助个问题!
请教下大神们,我想实现以下功能: 程序每秒接收到一个数据, 以当前系统时间为终点,取5分钟前的数据,程序该如何实现呢?随着系统时间的增加变化,5分钟内的数据也必须随着系统时间更新,懂delphi的大神们,帮帮忙贴段代码帮帮我,谢谢! 本帖最后由 sail2000 于 2021-8-24 10:42 编辑不知道每个数据多大,感觉可以用 TList 装入数据,
PDataItem = ^TDataItem;
TDataItem = record
ATime: TDateTime;//接收时间
AData: data;//你的数据
end;
每秒接收的数据放进这个结构,再放进 TList,开一个线程不断去检查这个 TList 的数据包含的时间。
另外一个想法,如果确定是每秒是准确的话,5分钟就是 300 个数据,那么可以每 inc 到 300 条数据就取第一条? 如果你用的是XE以上可以直接用 Generics.Collections 下的 TQueue 这个是一个先进先出的array
如果不是自己实现一下先进先出的队列
生成一个 5*60 -> 300 的 TQueue,
程序每秒接收到一个数据 -> 收到后放到 TQueue(Enqueue )如果大于300个了就Dequeue
取5分钟前的数据->TQueue.Peek, 默认取到的就是第一个 难得现在还有在用Delphi的 pzx521521 发表于 2021-8-24 10:20
如果你用的是XE以上可以直接用 Generics.Collections 下的 TQueue 这个是一个先进先出的array
如果不是自 ...
朋友,我用的是Delphi 7,能帮忙写段代码么?谢谢! zhujf 发表于 2021-8-24 10:30
朋友,我用的是Delphi 7,能帮忙写段代码么?谢谢!
这个分数很难的啦 都是DELPHI高手呀,现在的最新版Delphi,我都不会用了,更新的太多了。 用数据库吧,一个线程专门负责接收每秒发过来的数据,再带上时间字段存入数据库,另一个线程就专门取5分钟前的数据 erui 发表于 2021-8-24 11:09
都是DELPHI高手呀,现在的最新版Delphi,我都不会用了,更新的太多了。
新的delphi 比delphi7方便多了
页:
[1]