那种行为最有可能影响通讯速度?

秋天之落叶 2019-10-11 09:13:56
毫秒级计时的技能考试,目前还有三个BUG没能解决:
一是 偶显运行错误 argument ?,明天核对一下,摸不着头脑;
二是 偶显“comctl32.dll”读写错误,本地计时基本所有的人都出现错误,服务器计时,几乎没有错误,很是莫名;
三是 操作过程中少量机器出现卡顿(录完内容回车提交,停顿一下,才能清除数据并开始下一次的录入),导致操作数据可能录入错误或误操作。

代码执行顺序:
1、取服务器时间为开始时间 select getdate() as 时间
2、启动时间回调函数 timeid := timeSetEvent(1, 1, @MyCallBack, 0, TIME_PERIODIC)
3、时间回调函数中取服务器时间计时,倒计时显示在edit控件中
4、DBGrideh显示数据表,并随着进度移动
5、将数据写入数据表
6、完成
我初步怀疑5可能影响速度,出现卡顿,修改为:不再写入服务器数据,用TstringList暂时保存数据,5完成后,再进行数据写入。

我想问,上面1-5中哪一个操作最后可能引起卡顿?本地局域网还有其他什么情况会引起卡顿?
有请高手给分析一下。
...全文
168 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天之落叶 2020-03-01
  • 打赏
  • 举报
回复
最后的解决办法,检测错误信息含有COMCTL32.dll的略过,因为这个错误不影响计时继续,没办法的办法
秋天之落叶 2019-10-19
  • 打赏
  • 举报
回复
引用 13 楼 早打大打打核战争 的回复:
COMCTL32.dll和OCX/ActiveX相关,可能是操作Excel导致的?
用尽了办法找不到解决方法,最后发现错误不影响运行,就直接错误屏蔽了。 这个界面没有使用excel。网上的方法都不行,尤其是换文件,678910五个版本统统不行。
  • 打赏
  • 举报
回复
COMCTL32.dll和OCX/ActiveX相关,可能是操作Excel导致的?
  • 打赏
  • 举报
回复
考试不需要毫秒级计时呀,难道有抢答?
秋天之落叶 2019-10-14
  • 打赏
  • 举报
回复
引用 5 楼 天行归来 的回复:
[quote=引用 2 楼 秋天之落叶 的回复:]
偶显运行错误 argument out of range?
实在是找不到原因了,难道又是dbgrideh的版本BUG?

刷新UI也挺耗性能,另外,你出现的这种异常,可能是由于数据集更新,导致DBGridEh 的游标异常,你可以在更新数据前数据集与UI解绑(DisableControls),数据更新后再绑定(EnableControls)试下。[/quote]
我试一下,以前有过这样的错误,更换版本后正常,不知道为什么又出现了,头疼。
我也试一下楼上的意见,换成DBGrid试一试。
天行归来 2019-10-14
  • 打赏
  • 举报
回复
引用 2 楼 秋天之落叶 的回复:
偶显运行错误 argument out of range? 实在是找不到原因了,难道又是dbgrideh的版本BUG?
刷新UI也挺耗性能,另外,你出现的这种异常,可能是由于数据集更新,导致DBGridEh 的游标异常,你可以在更新数据前数据集与UI解绑(DisableControls),数据更新后再绑定(EnableControls)试下。
秋天之落叶 2019-10-14
  • 打赏
  • 举报
回复
引用 3 楼 doloopcn 的回复:
毫秒级计时的技能考试???

这种精度的程序为何还要使用第三方控件,建议你取消使用DBGridEh,改用DBGrid,或自己重写DBGrid

不太明白,DBGrid影响小一些?
秋天之落叶 2019-10-14
  • 打赏
  • 举报
回复
引用 11 楼 早打大打打核战争 的回复:
高版本windows(win8+),可以直接使用GetSystemTimePreciseAsFileTime,这个可以非常精确地取时间(微妙级)
在老版本windows上,可以:
timeBeginPeriod(1);
GetSystemTimeAsFileTime(...); 或者timeGetTime()
timeEndPeriod(1);
可以达到毫秒级计时精度
如果只是高精度取时间,不需要使用多媒体计时器回调

我是用的
timeBeginPeriod(1);
timeGetTime()
timeEndPeriod(1);

timeid := timeSetEvent(1, 1, @MyCallBack, 0, TIME_PERIODIC);
随机的差几毫秒,可以接受。
目前就是一个“COMCTL32.dll”偶有BUG,不知道如何解决?
使用DBGRIDEH和DBGRIDEH均有该BUG。
doloopcn 2019-10-14
  • 打赏
  • 举报
回复
毫秒级计时的技能考试???

这种精度的程序为何还要使用第三方控件,建议你取消使用DBGridEh,改用DBGrid,或自己重写DBGrid
  • 打赏
  • 举报
回复
高版本windows(win8+),可以直接使用GetSystemTimePreciseAsFileTime,这个可以非常精确地取时间(微妙级)
在老版本windows上,可以:
timeBeginPeriod(1);
GetSystemTimeAsFileTime(...); 或者timeGetTime()
timeEndPeriod(1);
可以达到毫秒级计时精度
如果只是高精度取时间,不需要使用多媒体计时器回调
秋天之落叶 2019-10-14
  • 打赏
  • 举报
回复
引用 9 楼 早打大打打核战争 的回复:
考打字?

录入数字,高水平的人员速度都差不多,秒数不够用,10几个同样秒数的,无法区分名次。
汉字录入就没有这么紧凑,用秒够用,因为有正确和错误扣分。
  • 打赏
  • 举报
回复
引用 8 楼 秋天之落叶 的回复:
[quote=引用 7 楼 早打大打打核战争 的回复:]
考试不需要毫秒级计时呀,难道有抢答?

你可能没经过数字录入的考试,也就是传统的百张掀打电子化技能考试,100-200个人同时考试,秒已经不能适应了,必须毫秒。[/quote]

考打字?
秋天之落叶 2019-10-14
  • 打赏
  • 举报
回复
引用 7 楼 早打大打打核战争 的回复:
考试不需要毫秒级计时呀,难道有抢答?

你可能没经过数字录入的考试,也就是传统的百张掀打电子化技能考试,100-200个人同时考试,秒已经不能适应了,必须毫秒。
秋天之落叶 2019-10-12
  • 打赏
  • 举报
回复
偶显运行错误 argument out of range?
实在是找不到原因了,难道又是dbgrideh的版本BUG?
秋天之落叶 2019-10-11
  • 打赏
  • 举报
回复
明天我准备着手修改4,将数据一次性显示在stringgrid,这样是不是可以减少通讯,避免卡顿?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧