Memory 使用TIdFTP下载大文件时内存不足错误

Memory 使用TIdFTP下载大文件时内存不足错误,memory,ftp,indy,Memory,Ftp,Indy,我正在尝试使用TIdFTP(版本10.6.2.5366)从FTP服务器下载视频文件 我可以建立连接并开始下载文件,但过了一段时间-我猜大约500MB,它会抛出“内存不足”错误 凝固后 ADataChannel.IOHandler.LargeStream := True 在IdFTPDataChannelCreate过程中,我的代码简单如下:- with IdFTP do begin TransferType := ftBinary; Get(Filename, Destin

我正在尝试使用TIdFTP(版本10.6.2.5366)从FTP服务器下载视频文件

我可以建立连接并开始下载文件,但过了一段时间-我猜大约500MB,它会抛出“内存不足”错误

凝固后

ADataChannel.IOHandler.LargeStream := True
在IdFTPDataChannelCreate过程中,我的代码简单如下:-

with IdFTP do
  begin
    TransferType := ftBinary;
    Get(Filename, DestinationFolder + '\' + ShortFilename, True, False); 
  end;
我错过什么了吗?是否需要设置其他属性才能使其正常工作

任何帮助都将不胜感激


谢谢。

LargeStream
TIdFTP
没有影响,因为文件大小不会在文件数据之前发送(此外,
TIdFTP
为您设置
LargeStream=True
)。我不知道这段代码怎么会引发“内存不足”错误,因为使用的内存很少。您使用的是通过
TFileStream
直接下载到文件系统的
Get()
版本(当然,
TIdFileCreateStream
TIdFTP
将从
TIdFTP.IOHandler.RecvBufferSize
块(默认为32K)中的套接字读取文件数据,并按原样写入
TFileStream
。如果使用压缩,开销会多一点,但不会太大。当错误出现时,调用堆栈到底是什么样子的?我完全弄糊涂了。我删减了代码片段,省略了导致问题的部分。现在修好了。但是谢谢你的评论——这很有帮助,到底是什么问题?由于它不是原始问题的一部分,因此无法按原样回答该问题,因此请更新或关闭它。