for 循环最大次数有没有限制啊,见第二楼代码。

jy02163807 2017-09-19 11:36:47
我写了一个串口数据监控软件,并用CHART图表实时显示接收到的数据 (每1S更新一次,使用Series1.AddXY)。
当鼠标在CHART上移动时,以鼠标所在位置为交点,通过CANVAS画出X/Y轴坐标。(Chart1MouseMove中处理)
由于每次CHART更新会清除原CANVAS所画,所以此时需要重新画X/Y轴坐标。(Timer1Timer中处理,1S定时)
以上处理带来的缺陷是:当接收到的数据量非常大以后,拖动窗体,会有明显的卡顿。
所以我想在Timer1Timer中新建线程,去完成CHART1的更新和CANVAS重画。

问题来了:新建线程中的CANVAS操作 和 主线程(Chart1MouseMove中的CANVAS冲突)。

怎么办啊??? 各位大哥吱吱招啊。
...全文
1263 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jy02163807 2017-09-22
  • 打赏
  • 举报
回复
各位大佬,FOR循环是不是有最大次数限制啊,如下,进不去循环。帮忙看看哈
procedure TThread1.Execute; var RecFile: file of TCurveData; RecData: TCurveData; i:LongWord; CommaStr:TStringList; begin FreeOnTerminate:= true; CommaStr:= TStringList.Create; AssignFile(RecFile,MainForm.OpenDialog1.FileName); Reset(RecFile); for i:=0 to 4294967295 do begin Seek(RecFile,i); Read(RecFile,RecData); CommaStr.CommaText:= Trim(RecData.OneRow); if CommaStr.CommaText = '' then begin MainForm.Series2.AddXY(i,50); MainForm.Series2.AddXY(i+1,50); break; end else begin with MainForm.Chart2 do begin Series[0].AddXY(i, StrToIntDef(CommaStr[1],0), ''); end; end; end; CommaStr.Free; CloseFile(RecFile); HisCount:= i; gbLookHistory:= true; MainForm.Edit45.Text:= inttostr(i); end;
zbdzjx 2017-09-22
  • 打赏
  • 举报
回复
试试改for循环为while循环

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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