兄弟帮忙呀(100分)

  • 主题发起人 主题发起人 dkq811230
  • 开始时间 开始时间
D

dkq811230

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TDownLoad.DownLoad(DataType: String);
begin
SendData(DataType);
frmDown.ShowModal;
//有什么代码可以代替这个语句.(就是我发送报文后,必须收到返回报文后才往下执收行showmessage('aaaaaaaa');,相应于一个等待一样)
showmessage('aaaaaaaa');
end;
procedure TDownLoad.ok;
begin
frmDown.modalResult:=Mrok;
end;
 
在收到数据的事件里面写这句话不就完了吗?
 
接收事件是写在线程里呀.兄弟呀
 
要等待就用Sleep函数好了,会等待你要的时间的...
或者把发送事件写在主线程中,然后发送后启动辅助线程来监控数据是否成功接收,若接收到了则继续主线程余下的作业,否则报错(通讯错误)。主线程和辅助线程用同步机制来通讯协调。
 
还有其它的方面没有.比如说消息事件
 
在线程里发送消息出来
 
你使用一个循环就可以代替该语句。
你在接收报文完成时设置一个标志变量,OK_flag:=true;
repeat
Application.ProcessMessages;//循环等待报文返回。
until OK_flag;
 
一个简单的办法
设一全局变量
var
MesReseved:boolean
在接受事件线程里 设置 MesReseved:=true;
把下列函数放到一timer 中
procedure TDownLoad.ok;
begin
if MesReseved then
begin
frmDown.modalResult:=Mrok;
MesReseved:=false;
end;
end;
 
后退
顶部