我对以下代码片段有疑问
启动后我的程序第一次运行此函数时,IdFtp.List 命令给出以下错误
带有消息“列表索引超出范围 (1)”的 EListError
但是在第二次运行时没有发生错误
procedure TForm1.FinnaSkrar(FileFilter: string; FtpFiles : TStringlist);
var
i : Integer;
begin
try
IdFTP1.List(FileFilter, False);
except
ShowMessage('No file found !');
Exit;
end;
for I := 0 to IdFTP1.DirectoryListing.Count - 1 do
FtpFiles.Add(IdFTP1.DirectoryListing.Items[i].FileName);
end;
我曾尝试在 Delphi 2010 上将 Indy 升级到最新版本 build 4734,但没有成功
一些进一步的信息,在错误的时候调用堆栈显示
- :7547b9bc KERNELBASE.RaiseException + 0x58
- :0043652e TList.Get + $1A
- :0043652e TList.Get + $1A
- IdComponent.TIdComponent.EndWork(wmRead)
- IdComponent.TIdComponent.EndWork(wmRead)
- IdComponent.TIdComponent.EndWork(wmRead)
- IdIOHandler.TIdIOHandler.ReadStream($229ADD0,-1,True)
- IdFTP.TIdFTP.InternalGet('NLST REKIM- 0130 ',$229ADD0,False)
- IdFTP.TIdFTP.List(nil,'REKIM- 0130 ',False)
- IdFTP.TIdFTP.List('REKIM- 0130 ',False)
- unitMainTntNavi.TfrmMain.FinnaSkrar('REKIM- 0130 ',$22BE730)
OnDirParseStart 和 OnRetrived 目录尚未触发
并且 IdFTP1.DirFormat 字符串为空
首先调用 IdFTP1.RetrieveCurrentDir 没有帮助
调用 IdFTP1.List(nil) 具有相同的结果