社区
网络及通讯开发
帖子详情
new出来的idicmpclient的onreply事件怎么响应?
lo0P
2003-07-30 03:38:38
想用idicmpclient作个多线程的网络连通性检测软件
可是不知怎么出来reply
在h中定义
void __fastcall icmpReply(TObject *Sender,
const TReplyStatus &AReplyStatus);
程序里设置
icmp->OnReply=icmpReply;
不行
该怎么办?
...全文
181
17
打赏
收藏
new出来的idicmpclient的onreply事件怎么响应?
想用idicmpclient作个多线程的网络连通性检测软件 可是不知怎么出来reply 在h中定义 void __fastcall icmpReply(TObject *Sender, const TReplyStatus &AReplyStatus); 程序里设置 icmp->OnReply=icmpReply; 不行 该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lo0P
2003-08-15
打赏
举报
回复
季头实在是好人
同时也感谢其他帮助我的人
lo0P
2003-08-14
打赏
举报
回复
up
jishiping
2003-08-14
打赏
举报
回复
没有用过TIdIcmpClient这个控件,后面的就不知道如何做了。
lo0P
2003-08-11
打赏
举报
回复
帮忙啦,再出50分但给解决问题的人
lo0P
2003-08-08
打赏
举报
回复
谢谢季老大,程序通了
但是目的没有达到,
void __fastcall TForm1::icmpReply(TComponent *Sender,
const TReplyStatus &AReplyStatus)
{
ShowMessage("ok");
}
在icmp->Ping();之后icmp->OnReply没有发生??
lo0P
2003-08-07
打赏
举报
回复
还是没有搞定,错误成了 [C++ Error] Unit1.cpp(33): E2235 Member function must be called or its address taken
想在线程里用indy这么难么?
以下是我new indy的测试代码
//Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TIdIcmpClient *icmp=new TIdIcmpClient(this);
for(int i=0;i<lvNetState->Items->Count;i++)
{
icmp->Host=lvNetState->Items->Item[i]->Caption;
lvNetState->Tag=i;
lvNetState->Items->Item[i]->StateIndex=2;
lvNetState->Items->Item[i]->SubItems->Strings[1]=Now().CurrentTime();
Application->ProcessMessages();
//icmp->OnReply=dd(0,rsEcho);
icmp->Ping();
}
icmp->OnReply=(TOnReplyEvent)icmpReply;
}
//---------------------------------------------------------------------------
//Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <ImgList.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdIcmpClient.hpp>
#include <IdRawBase.hpp>
#include <IdRawClient.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TListView *lvNetState;
TPanel *Panel1;
TLabel *Label1;
TLabel *Label2;
TButton *Button1;
TEdit *edtTime;
TCheckBox *enTimer;
TImageList *ImageList1;
TButton *Button2;
TButton *Button3;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
/* TEvent *icmpReply=new TEvent(TObject *Sender,
const TReplyStatus &AReplyStatus); */
void __fastcall icmpReply(TComponent *Sender,
const TReplyStatus &AReplyStatus);
void __fastcall Button3Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
jishiping
2003-08-07
打赏
举报
回复
当然了,头文件 .hpp 和 .cpp 中都要修改。
jishiping
2003-08-07
打赏
举报
回复
看了你写的错误提示,只要将函数 icmpReply 中的参数类型 TObject 改为 TComponent 就
可以了,也就是:
void __fastcall icmpReply(TComponent *Sender, const TReplyStatus &AReplyStatus);
jishiping
2003-08-07
打赏
举报
回复
将 icmp->OnReply=(TOnReplyEvent)icmpReply; 改为 icmp->OnReply = icmpReply;
lo0P
2003-08-06
打赏
举报
回复
up+
lo0P
2003-08-06
打赏
举报
回复
up
lo0P
2003-08-04
打赏
举报
回复
不行啊,大哥
无论是在h声明还是在cpp声明都不可以
头疼
猎人66
2003-08-01
打赏
举报
回复
icmp->OnReply=(TOnReplyEvent)&icmpReply;
试试
lo0P
2003-08-01
打赏
举报
回复
提示
[C++ Error] Unit1.cpp(32): E2034 Cannot convert 'void (_fastcall * (_closure )(TObject *,const TReplyStatus &))(TObject *,const TReplyStatus &)' to 'void (_fastcall * (_closure )(TComponent *,const TReplyStatus &))(TComponent *,const TReplyStatus &)'
FlySky01
2003-08-01
打赏
举报
回复
你的写法没有错
看看是不是有别的问题
或者根本没有这个事件响应
猎人66
2003-08-01
打赏
举报
回复
没有语法错误吧?
那一定是Reply事件没有发生吧?
lo0P
2003-07-31
打赏
举报
回复
up
java中
new
Instance()方法的作用
点击打开链接
new
Instance()也是用来创建新的对象,其与
new
()的区别是:
new
Instance():弱类型,效率低,只能调用无参构造
new
():强类型,高效率,能调用任何public构造器
点击click
事件
在iPad没有
响应
本来在ipad使用tap
事件
,工作的很好。但是需求改变,要适应
PC
跟ipad,所以索性直接替换zepto改成jquery。理想不错,但是现实是,在浏览器上click
事件
工作得很好,切换到模拟器上面,也运行不错,但是切换到真机ipad上面,悲剧了,根本不
响应
click
事件
。查看了一遍又输出,还是木有反应。急了,只能求助谷歌了,click no action in pad 第一条出来的就是stackov
C++中定义类的对象:用
new
和不用
new
有何区别?
本文系统讲解了C++中
new
/delete操作符的工作原理及使用规范。
new
通过三步完成内存分配、对象构造和返回指针,delete则执行对象析构和内存释放。重点区分了delete和delete[]的使用场景:前者释放单个对象,后者处理对象数组,混用会导致未定义行为。文章推荐三大最佳实践:严格配对使用
new
/delete、优先使用智能指针、采用标准容器。最后强调理解内存管理机制的重要性,提倡遵循RAII原则以确保程序稳定性。
控制WinForm控件上的键盘,鼠标
事件
响应
当界面锁屏时,需要在点击界面控件时,或键盘输入时,弹出解锁框,解锁后,才可以输入,否则
响应
鼠标键盘
事件
。 一 普通控件 普通控件,不
响应
键盘
事件
,设置KeyPress
事件
的Handled = ture; void parentControl_KeyPress(object sender, KeyPressEventArgs e) { ShowLoc
Zepto tap
事件
“穿透”、“点透”问题研究
首先,什么是zepto tap
事件
穿透? tap
事件
穿透就是,有多个层级上有绑定
事件
,最上层的绑定了tap
事件
,下层绑定了click
事件
,在执行完上层
事件
后会触发下层
事件
,进而出现
事件
穿透。如果下层是input标签,必穿透。 究其原因: 是因为zepto实现tap
事件
是冒泡到document上时才触发的,也就是tap
事件
是绑定在document上,而click
事件
有延时触发。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章