试图制作一个简单的IRC客户端供个人使用,所以我安装了Delphi 7和Indy 10,请注意,我没有在delphi中为10 (?)做任何工作。几年,即使是那时,也没有那么先进。只是为了玩玩而已。
procedure TForm1.IRCPrivateMessage(ASender: TIdContext; const ANickname,
AHost, ATarget, AMessage: String);
begin
if ATarget = '#channel' then
begin
Memo1.Lines.Add('[' + TimeToStr(Time) + '] <' + ANickname + '> ' + Amessage);
end;
if ATarget = '#channel2' then
begin
Memo2.Lines.Add('[' + TimeToStr(Time) + '] <' + ANickname + '> ' + Amessage);
end;
end;这会因为两次使用Amessage而冻结程序吗?
如果有人能向我展示一个获取时间的工作示例,尼克和消息添加到一份关于私有化活动的备忘录中,那就太好了:)
发布于 2014-01-07 12:29:14
正如问题(Delphi 2009) idIRC, MDI, and problems with hanging的答案所述,IRCPrivateMessage运行在与阻塞套接字相同的线程中。不允许在没有适当保护的情况下从此事件处理程序访问GUI。
您需要使用Synchronize、Queue或其他技术,如向主线程发送消息。
https://stackoverflow.com/questions/20968440
复制相似问题