高分求救!这种问题该如何解决啊,最好能提供点代码参考,跪谢!(200分)

  • 主题发起人 主题发起人 hnlg81004
  • 开始时间 开始时间
H

hnlg81004

Unregistered / Unconfirmed
GUEST, unregistred user!
首先在TreeView中第三3层的加入设备名称,每个设备对应一个IP,如下
L2-1(线别)
|__HIINPUT(制程)
| |__ (图标)HIINPUT 01(设备名称192.168.0.1)
|__ TULQC(制程)
|__ (图标)TULQC 01(设备名称192.168.0.2)



现在做一个服务程序,当设备连接上来的时候设备名称前的图标发生变化,类似QQ上下线的功能,同时能监听本机的端口来截取每个上线设备传来的数据并显示在listview中或Memo中。以前没有做过网络这一块,不知道改怎么实现。
 
没有人知道吗?
 
哎,真郁闷
 
哎!我来说两句吧。
楼主的问题问得太笼统,只是说了个大概,大家都不知道你究竟具体要问的问题是什么。
至于整个程序要怎么实现是要楼主自己去考虑好的,然后在实现这些功能的时候遇到了什么问题才是大家想知道和能够帮你想办法的。
 
问题现在明确了,我打算用TidTcpServer来实现,当有设备连接上来的时候触发Connect事件,将设备的状态图标改变为上线图标,当设备下线的时候触发Disconnect事件,将设备的状态图标改变为下线图标,现在碰到了问题,请帮忙看下面代码有什么错误,运行后会报“no Execute handler found”错
//tvServer为TreeView,用来显示设备名称,lv1是listview,用来存放设备名称和其IP
procedure TFrmMain.SetTerminalIcon(thread: TIdPeerThread; imageIndex: Integer);
var
i,j: Integer;
begin
i:=0;
if tvServer.Items.Count>0 then
begin
for i:=0 to tvServer.Items.Count-1 do
begin
for j:=0 to lv1.Items.Count-1 do
begin
if lv1.Items[j].SubItems[0]=thread.Connection.Socket.Binding.IP then
try
tvserver.Items.BeginUpdate;
tvServer.Items.ImageIndex:=imageIndex;
finally
tvserver.Items.EndUpdate;
end;
end;
end;
end;
end;

procedure TFrmMain.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
SetTerminalIcon(AThread,3);
end;

procedure TFrmMain.IdTCPServer1Disconnect(AThread: TIdPeerThread);
begin
SetTerminalIcon(AThread,4);
end;
 
应该是
procedure TFrmMain.SetTerminalIcon(thread: TIdPeerThread; imageIndex: Integer);
var
i,j: Integer;
begin
if (tvServer.Items.Count>0) and (lv1.Items.Count>0) then
begin
for i:=0 to tvServer.Items.Count-1 do
begin
for j:=0 to lv1.Items.Count-1 do
begin
if tvServer.Items.Text=lv1.Items[j].Caption then
begin
if lv1.Items[j].SubItems[0]=thread.Connection.Socket.Binding.IP then
try
tvServer.Items.BeginUpdate;
tvServer.Items.ImageIndex:=imageIndex;
finally
tvServer.Items.EndUpdate;
end;
end;
end;
end;
end;
end;

procedure TFrmMain.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
SetTerminalIcon(AThread,3);
end;

procedure TFrmMain.IdTCPServer1Disconnect(AThread: TIdPeerThread);
begin
SetTerminalIcon(AThread,4);
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部