吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1511|回复: 8
收起左侧

[求助] 有会Delphi语言的朋友吗?求助个问题!

[复制链接]
zhujf 发表于 2021-8-24 10:04
30吾爱币
    请教下大神们,我想实现以下功能: 程序每秒接收到一个数据, 以当前系统时间为终点,取5分钟前的数据,程序该如何实现呢?随着系统时间的增加变化,5分钟内的数据也必须随着系统时间更新,懂delphi的大神们,帮帮忙贴段代码帮帮我,谢谢!

最佳答案

查看完整内容

不知道每个数据多大,感觉可以用 TList 装入数据, PDataItem = ^TDataItem; TDataItem = record ATime: TDateTime;//接收时间 AData: data;//你的数据 end; 每秒接收的数据放进这个结构,再放进 TList,开一个线程不断去检查这个 TList 的数据包含的时间。 另外一个想法,如果确定是每秒是准确的话,5分钟就是 300 个数据,那么可以每 inc 到 300 条数据就取第一条?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sail2000 发表于 2021-8-24 10:04
本帖最后由 sail2000 于 2021-8-24 10:42 编辑

不知道每个数据多大,感觉可以用 TList 装入数据,
PDataItem = ^TDataItem;
TDataItem = record
  ATime: TDateTime;//接收时间
  AData: data;//你的数据
end;
每秒接收的数据放进这个结构,再放进 TList,开一个线程不断去检查这个 TList 的数据包含的时间。

另外一个想法,如果确定是每秒是准确的话,5分钟就是 300 个数据,那么可以每 inc 到 300 条数据就取第一条?
pzx521521 发表于 2021-8-24 10:20
如果你用的是XE以上可以直接用 Generics.Collections 下的 TQueue 这个是一个先进先出的array
如果不是自己实现一下先进先出的队列

生成一个 5*60 -> 300 的 TQueue,
程序每秒接收到一个数据 -> 收到后放到 TQueue(Enqueue )如果大于300个了就Dequeue
取5分钟前的数据->TQueue.Peek, 默认取到的就是第一个
sikro 发表于 2021-8-24 10:23
 楼主| zhujf 发表于 2021-8-24 10:30
pzx521521 发表于 2021-8-24 10:20
如果你用的是XE以上可以直接用 Generics.Collections 下的 TQueue 这个是一个先进先出的array
如果不是自 ...

朋友,我用的是Delphi 7,能帮忙写段代码么?谢谢!
pzx521521 发表于 2021-8-24 10:37
zhujf 发表于 2021-8-24 10:30
朋友,我用的是Delphi 7,能帮忙写段代码么?谢谢!

这个分数很难的啦
erui 发表于 2021-8-24 11:09
都是DELPHI高手呀,现在的最新版Delphi,我都不会用了,更新的太多了。
comeheres 发表于 2021-8-24 11:43
用数据库吧,一个线程专门负责接收每秒发过来的数据,再带上时间字段存入数据库,另一个线程就专门取5分钟前的数据
gfs 发表于 2021-8-29 21:37
erui 发表于 2021-8-24 11:09
都是DELPHI高手呀,现在的最新版Delphi,我都不会用了,更新的太多了。

新的delphi 比delphi7方便多了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表