如题:当我断点进入Timer事件时,所有语句均执行,否则有的语句不执行。 if ListNo = ListLen then ListNo := 0;
if FStateList.Strings[ListNo] = '0' then
begin
if FModBusTCP.ReadCoils(StrToInt(FHashList.Strings[ListNo]),4 ,8,ByteTemp) = 0 then
FStateList.Strings[ListNo] := '1';
end;
if SameText(FStateList.Strings[ListNo] , '1') then
begin
if ReadFlag(FHashList.Strings[ListNo],1) then
begin
StateValue := ReadMBState(FHashList.Strings[ListNo],2);
Len := ReadLength(FHashList.Strings[ListNo],3);
Txt := ReadString(FHashList.Strings[ListNo],4,Len);
ProcessData(FHashList.Strings[ListNo],Txt,StateValue);
end;
end;
Inc(ListNo);
if FStateList.Strings[ListNo] = '0' then
begin
if FModBusTCP.ReadCoils(StrToInt(FHashList.Strings[ListNo]),4 ,8,ByteTemp) = 0 then
FStateList.Strings[ListNo] := '1';
end;
if SameText(FStateList.Strings[ListNo] , '1') then
begin
if ReadFlag(FHashList.Strings[ListNo],1) then
begin
StateValue := ReadMBState(FHashList.Strings[ListNo],2);
Len := ReadLength(FHashList.Strings[ListNo],3);
Txt := ReadString(FHashList.Strings[ListNo],4,Len);
ProcessData(FHashList.Strings[ListNo],Txt,StateValue);
end;
end;
Inc(ListNo);
解决方案 »
- 更改jpg的dpi问题~
- 请帮忙看看,这样的查询语句怎么写!
- 高手请教!
- 關於ADO 建立臨時表報錯的問題,急
- 请问哪里有delphi的族谱图啊!
- 难!请问怎样用TIDFTP实现远程文件的拷贝?
- 请将下列语句C++转化成Object Pascal
- select '0' as id, * from tabelA,为何id变成memo类型?
- 怎样一次性给一个record类动态数组赋同一值?
- delphi无法调用SQLSERVER的触发器????
- 请问各位大虾,我加载的.gif格式的动画图片怎么样才能让他随着窗体的变化而变化呢,在此谢谢大家了。
- 请问一下SendMessage发送鼠标事件,为什么不成功
Timer事件的出口加入 myTimer.Enabled := true; myTimer.Enabled := false;
if ListNo = ListLen then ListNo := 0;
if FStateList.Strings[ListNo] = '0' then
begin
if FModBusTCP.ReadCoils(StrToInt(FHashList.Strings[ListNo]),4 ,8,ByteTemp) = 0 then
FStateList.Strings[ListNo] := '1';
end;
if SameText(FStateList.Strings[ListNo] , '1') then
begin
if ReadFlag(FHashList.Strings[ListNo],1) then
begin
StateValue := ReadMBState(FHashList.Strings[ListNo],2);
Len := ReadLength(FHashList.Strings[ListNo],3);
Txt := ReadString(FHashList.Strings[ListNo],4,Len);
ProcessData(FHashList.Strings[ListNo],Txt,StateValue);
end;
end;
Inc(ListNo);
myTimer.Enabled := true;
目前我的做法和您说的一样,但还是有这个问题。
如果我在程序中加上
Sleep(400);
Application.ProcessMessages ;
通常情况下便可以正常执行。 是不是因为某些语句的执行时间太长,而跳过下面的语句不执行了?
按道理不会的,可又没有合理的解释!
如果有多个timer事件,这样会不会程序运行起来很卡啊(停顿感)?