重金求解:Delphi 7 下IdFtp.Get后程序没有反应死锁状态. ( 积分: 200 )

  • 主题发起人 主题发起人 gzbxmcx
  • 开始时间 开始时间
G

gzbxmcx

Unregistered / Unconfirmed
GUEST, unregistred user!
连接一切正常情况下,一执行到:FIdFtp.Get(self.FileName, FileName, True);就不动了。
procedure TFTPTransfer.Connect;
begin
try
FIdFtp.Host := self.Host;
FIdFtp.Username := self.User;
FidFtp.Password := self.Password;
FIdFtp.Port := self.Port;
FIdFtp.Connect(True);
if (FidFtp.Username <> 'Anonymous') then
FIdFtp.Login;
except
raise;
end;
end;

procedure TFTPTransfer.Get(FileName: String);
begin
try
if (not FIdFTP.Connected) then
Connect();
FIdFtp.Passive := True;
FIdFtp.ChangeDir(self.CurrentDir);//一切正常。
FIdFtp.Get(self.FileName, FileName, True);//这句死锁!
FIdFtp.Disconnect;
except
raise;
end;
end;
 
连接一切正常情况下,一执行到:FIdFtp.Get(self.FileName, FileName, True);就不动了。
procedure TFTPTransfer.Connect;
begin
try
FIdFtp.Host := self.Host;
FIdFtp.Username := self.User;
FidFtp.Password := self.Password;
FIdFtp.Port := self.Port;
FIdFtp.Connect(True);
if (FidFtp.Username <> 'Anonymous') then
FIdFtp.Login;
except
raise;
end;
end;

procedure TFTPTransfer.Get(FileName: String);
begin
try
if (not FIdFTP.Connected) then
Connect();
FIdFtp.Passive := True;
FIdFtp.ChangeDir(self.CurrentDir);//一切正常。
FIdFtp.Get(self.FileName, FileName, True);//这句死锁!
FIdFtp.Disconnect;
except
raise;
end;
end;
 
FIdFtp.Get(self.FileName, FileName, True);//这句死锁!
把你的Self.FileName,和FileName明显区分开再说吧~~~分别命名
 
FIdFtp.Get(self.FileName, FileName, True);//文件名对吗?文件名可能要区分大小写的。
 
楼上的,根大小写没关系。
 
try
FIdFtp.Get(self.FileName, FileName, True);//这句死锁!
except
//在此显示一下是什么错误
end;
 
没有错误,程序直接停在那句上了。
 
请各位帮忙解决一下.
 
1、TransferType := ftBinary;没有写 or ftascii
2、FIdFtp.Passive := True;//去掉这句试试
3、文件名是要区分大小写的
4、企业级应用的话,整个程序写的太简单

 
TO:张剑波
你说的方法我都试过了,还是不行。
 
在delphi6/demos/indy/ftpdemo就有ftp的例子(不知d7中是否也有),看看能否正常运行,如果不行的话,那估计是你的网络或系统有问题了。

其次,你在ie地址栏直接输入ftp服务器的地址测试看看能否成功,比如ftp服务器地址是192.168.0.1,那就输入ftp://192.168.0.1,默认端口是21,然后在登陆窗口中输入对应的帐户和密码。成功进行文件拷贝、删除等操作来测试。
 
在D6下Demo可以正常下载但D7下的Indy没有Demo,我的环境要求必需是D7,还有就是这个程序前面连接FTP的操作都完了,只是在下载文件时用Get时程序就停在那里不动了。
 
跟踪进去看看吧,看到底是在哪句上停住了。
 
是不是你的文件太大了?先找个小的文件试试。呵呵
 
不是呀,兄弟那个文件不大呀。
 
怎么没人会这个问题??
 
还是先确定不是服务器或文件的原因吧,换个FTP站点试试看,从代码是看不出来什么问题。
 
赫赫,去下载indy9
delphi带的有严重问题
 
indy9我用了,也是同样的结局。
 
放一个IdAntiFreeze1上去试试!!直接放上去,不用管!
 
后退
顶部