我的程序:
先设置了
IdTCPClient.Host := '127.0.0.1';
IdTCPClient.Port := 1234;procedure NetLink;
begin
try
IdTCPClient.Connect;
except
if Application.MessageBox('连接不上!是否重设?','出错', MB_YESNO) = IDYES then
begin
IPSetup; //<重新设置Host和Port的模式窗口>
NetLink;
end;
end;
end;很奇怪,当连接不成功时,这里MessageBox 和模式窗口都不能显示,而直接执行NetLink进行循环连接,我跟踪了,发现都执行,但MessageBox 和模式窗口不能停下来!!是不是Connect把Windows的消息系统都搞乱了,怎么办!!
先设置了
IdTCPClient.Host := '127.0.0.1';
IdTCPClient.Port := 1234;procedure NetLink;
begin
try
IdTCPClient.Connect;
except
if Application.MessageBox('连接不上!是否重设?','出错', MB_YESNO) = IDYES then
begin
IPSetup; //<重新设置Host和Port的模式窗口>
NetLink;
end;
end;
end;很奇怪,当连接不成功时,这里MessageBox 和模式窗口都不能显示,而直接执行NetLink进行循环连接,我跟踪了,发现都执行,但MessageBox 和模式窗口不能停下来!!是不是Connect把Windows的消息系统都搞乱了,怎么办!!
begin
try
IdTCPClient.Connect;
if idtcpclient1.Connected =false then
begin
Idtcpclient.disconnect;
if Application.MessageBox('连接不上!是否重设?','出错', MB_YESNO) = IDYES then
begin
IPSetup; //<重新设置Host和Port的模式窗口>
NetLink;
end;
end;
except
Idtcpclient.disconnect;
end;
end;
begin
try
IdTCPClient.Connect;
if idtcpclient.Connected =false then
begin
Idtcpclient.disconnect;
if Application.MessageBox('连接不上!是否重设?','出错', MB_YESNO) = IDYES then
begin
IPSetup; //<重新设置Host和Port的模式窗口>
NetLink;
end;
end;
except
Idtcpclient.disconnect;
end;
end;
另外,我还发现ReadBuffer没有TimeOut设置,如果万一出一点送错收不到指定长度的数据,那不是死等,这又如何解决呢?
我在网上找到一个Indy说明,人家说是有ReadTimeOut属性的,但我的里面找不到
另我看一些网上的例程,是这样的,IdTCPClient.Connect(ATimeOut),但我的里面也找不到Connect有参数
我的是Delphi6安装就自动安装了的Indy
网站:
http://www.indyproject.org/index.html
搞了半天还搞不定
烦
我下载了Indy9,但是安装老是不成功
我用的是Delphi6,在Indy网站下载的Indy9.0.14
我按说明先将Delphi6自带的Indy卸载掉,然后运行FullD6.bat生成包文件,再启动Delphi6安装。但出现了
找不到程序入口@Idresourcestrings@_RSBindingAny在Indy60.bpl动态链接库中
意思大概这样,我记不是很清
我又试了9.0.13;9.0.12;9.0.11;都不行
后来我以为我的Delphi6没升级,又升级了RTL2,也不行,升级了RTL3也不行
郁闷啊
运行borland\delphi6\Borland Delphi 6.msi来卸载
它会自动删除旧的文件
try {
//操作文件代码
}
catch (CFileException * e) {
switch (e->m_cause) {
case CFileException::accessDenied :
//文件访问异常,一般为另一个应用程序在使用该文件
break;
case CFileException::badPath :
//路径不正确
break;
case CFileException::diskFull :
//磁盘空间已满
break;
case CFileException::fileNotFound :
//指定目录下没有发现要操作的文件
break;
case CFileException::hardID :
//硬件错误
break;
case CFileException::lockVoilation :
//文件锁定失败
break;
case CFileException::shareVoilation :
//文件共享错误
break;
case CFileException::tooManyOpenFiles :
//文件打开太多
break;
}
}只有具体知道文件异常的类型才能进行响应的处理,在每个case语句的后面根据具体异常的类型进行相应的处理即可希望对你有所帮助!