首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Indy组件的问题

Indy组件的问题
EN

Stack Overflow用户
提问于 2021-05-24 10:59:10
回答 1查看 220关注 0票数 0

我使用Delphi 6与Indy组件,有一个问题,在2GB以上的文件传输。小文件正常工作。

有没有人遇到过类似的问题?

更新:

从Indy 9升级到Indy 10有一个问题。此代码不再编译:

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2021-05-25 15:15:01

您正在使用Indy 9,它是Indy的一个非常老的版本,不再受Indy团队的支持。该版本的Indy确实对文件传输有2GB的限制。

尽管Delphi6是引入64位流的版本,但是Indy 9(特别是TIdFTP用于传输的TIdTCPConnectionTIdTCPConnectionReadStream()方法)从来不支持64位流。

如果您需要处理> 2GB的文件传输,则必须升级到Indy 10 (否则放弃TIdFTP并手动实现FTP协议,那么您可以任意处理传输)。

Indy 10仍然支持Delphi5,请注意,在Indy 11中将放弃对前Unicode编译器的支持。

update :关于您的编译错误,这是因为您正在重写基类TIdTCPConnection类中不再存在的方法,它们被移到Indy 10中的TIdIOHandler类中。因此,您需要相应地更新代码。如果您想捕获TIdFTP发送/接收的所有命令和响应,则应该重写虚拟SendCmd()GetResponse()方法,或者将TIdConnectionIntercept-derived对象分配给TIdFTPIntercept属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67670904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档