为什么事件不被执行,100送送上.(100)

  • 主题发起人 主题发起人 leadroy
  • 开始时间 开始时间
L

leadroy

Unregistered / Unconfirmed
GUEST, unregistred user!
function PressReg(SoftID:pchar):boolean;var mstr:string; k:cardinal;begin S1:=tIDUDPServer.Create(nil); s1.OnUDPRead:=MyControl.Onread; {这个是动态建件的事件} mstr:=regpub.Enc('LEADCK'+'|'+SoftID+'|'+getkey); EventFinish:=false; k:=gettickcount; s1.Send(regpub.CheckServerIP,9091,mstr); while (gettickcount-k<4000) and (not eventfinish) do application.ProcessMessages;end;下面是事件class procedure MyControl.Onread(Sender: TObject; AData: TStream;ABinding: TIdSocketHandle);var temp:TStringStream;begin try temp:=TStringStream.Create(''); temp.CopyFrom(adata,adata.Size); EventFinish:=true; RetValue:=regpub.Dec(temp.DataString); finally temp.Free; end;end;问题出在当我发送了信息给远程服务器等远程服务器回复时,这个onread事件不能被执行.只有一种方法就是在发送后放一个showmessage,说明这个事件不能得到CPU处理时间,问题应该出在application.ProcessMessages上面,请高手指点.备注:所有代码在一个单元里面.没有FORM
 
你问题描述的不太容易懂
 
你发送后如果服务器在4秒内没响应的话怎么办
 
如服务器没有影响,返回一个值啊.如有响应,返回其它值.
 
可能判断要放在CLASS里!就是这句 放到 onread里while (gettickcount-k<4000) and (not eventfinish) do application.ProcessMessages;
 
你的S1没有绑定IP和端口
 
后退
顶部