0

我对以下代码片段有疑问

启动后我的程序第一次运行此函数时,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) 具有相同的结果

4

0 回答 0