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

  • 主题发起人 主题发起人 gzbxmcx
  • 开始时间 开始时间
IdAntiFreeze1是干什么的?
 
还是没有反应,程序第一次调用:FIdFtp.Get(self.FileName, FileName, True);//
是好的,第二次调用时就死在:这句上。
 
Serv-U服务器,98为客户端的情况下,偶尔能碰上这样的情况.见意用2000的自带FTP试一下.
 
我在D6下面是好好的,后来安装INDY 10,的确会出现楼主所讲的现象,仔细琢磨了一下,发现INDY 10的功能非常强,楼主的问题解决其实很简单,只要放上IdAntiFreeze1、IdIOHandlerStack1、IdConnectionIntercept1就可以了。

好事做到底,楼主可以到我自己的FTP下载INDY,
FTP地址:ftp.mlfjnp.com
帐户: nply 密码: nply
 
谢谢兄弟,多试试。!
 
谢谢兄弟你说的方法可以,但是我把Indy升级到10.0后出现下面的问题:
TFTPTransfer = class(TTransfer)
private
FIdfTP: TIdfTP;
procedure SetHost(const Value: string); override;
protected
function GetOnStatus: TIdStatusEvent; override;
procedure SetOnStatus(Value: TIdStatusEvent); override;
public
constructor Create;
destructor Destroy; override;
procedure Connect; override;
procedure Get(FileName: String); overload; override;
procedure Get(Stream: TStream); overload; override;
procedure WorkStart(Sender: TObject; AWorkMode: TWorkMode; const
AWorkCountMax: Integer); override;
end;

constructor TFTPTransfer.Create;
begin
inherited Create;
FIdFTP := TIdFTP.Create(nil);
FIdFtp.OnWorkBegin := Self.WorkStart; //这里时提示错误:
self.Port := 21;
end;
 
TO : chnplzh
把你的QQ留下好吗?我们在那里讨论。
 
最后还忘了一句:
FIdFtp.OnWorkBegin := Self.WorkStart; //这里时提示错误:[Error] Transfer.pas(147): Incompatible types: 'Parameter lists differ'
 
把源代码搞过来跟踪一下看看先
 
to gzbxmcx:
后面的问题其实很简单,就是Self.WorkStart有问题,楼主其实是想动态生成fidftp并定义它的OnWorkBegin,那好只要定义一个private过程就可以了,该过程参数与OnWorkBegin一致,即procedure MyFtpWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer);
不好意思,我很少上QQ,偶尔上MSN,公司有规定,上班期间尽量不要网上聊天。有问题可以发送E-MAIL: chnplzh@mlfjnp.com chnplzh@163.com
 
to gzbxmcx:
不好意思,你讲的是源代码里面的问题,这样吧,我这里是D6,你的是D7,建议你参考以下网站:
http://www.indyproject.org/download/Files/Indy10.iwp
 
谢谢哥们,一切OK,顺利下载!
 
后退
顶部