我使用Delphi 6与Indy组件,有一个问题,在2GB以上的文件传输。小文件正常工作。
有没有人遇到过类似的问题?
更新:
从Indy 9升级到Indy 10有一个问题。此代码不再编译:
TbaseFTP = Class(idftp)
Private
Jonwrite : TFTPDataLogEvent;
Jonread : TFTPDataLogEvent;
Public
Procedure WriteLn(Const POut : string = ''); Override;
Function ReadLn(PTerminate : string = LF; const Ptimeout : Integer = IdTimeoutDefault; PMaxllength : integer = -1):string ;override;
Implementation
Procedure TbaseFTP.writeLn(Const Pout : string = '');
Begin
if assigned (JOnWrite) then
JonWrite(Pout);
inherited;
End;发布于 2021-05-25 15:15:01
您正在使用Indy 9,它是Indy的一个非常老的版本,不再受Indy团队的支持。该版本的Indy确实对文件传输有2GB的限制。
尽管Delphi6是引入64位流的版本,但是Indy 9(特别是TIdFTP用于传输的TIdTCPConnection的TIdTCPConnection和ReadStream()方法)从来不支持64位流。
如果您需要处理> 2GB的文件传输,则必须升级到Indy 10 (否则放弃TIdFTP并手动实现FTP协议,那么您可以任意处理传输)。
Indy 10仍然支持Delphi5,请注意,在Indy 11中将放弃对前Unicode编译器的支持。
update :关于您的编译错误,这是因为您正在重写基类TIdTCPConnection类中不再存在的方法,它们被移到Indy 10中的TIdIOHandler类中。因此,您需要相应地更新代码。如果您想捕获TIdFTP发送/接收的所有命令和响应,则应该重写虚拟SendCmd()和GetResponse()方法,或者将TIdConnectionIntercept-derived对象分配给TIdFTP的Intercept属性。
https://stackoverflow.com/questions/67670904
复制相似问题