Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71577
  • 博文数量: 20
  • 博客积分: 2126
  • 博客等级: 大尉
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-17 15:51
文章分类

全部博文(20)

文章存档

2013年(1)

2012年(3)

2011年(2)

2010年(6)

2009年(7)

2008年(1)

我的朋友

分类:

2010-05-10 17:10:39

IdFTP有一个函数List,可以列出FTP上某文件夹下所有文件的详细信息。函数原型是:
 

TIdFTP.List(ADest: TStrings; const ASpecifier: string = ''; const ADetails: boolean = true);

ADest:保存返回的详细信息的TStrings

ASpecifier:指定某个文件的详细信息,若想返回整个文件夹下所有文件的信息,则留空。

ADetails:是否显示明细内容。


所以一般的用法可能如下:
 

var

  FileList: TStringList;

  i: Integer;

begin

  ...

  IdFTP.List(FileList, '', True);

  for i := 0 to FileList.Count - 1 do

    DoSomething(IdFTP.DirectoryListing.Items[i].FileName)

  ...

end


  一般情况下,这段代码是没有问题的,但是,有一次却发现这段代码却出现了list index out of bounds的错误。经仔细检查发现,FileList.Count比IdFTP.DirectoryListing.Count大了1,导至了这个问题的产生。
  由于这个问题是在正式环境下产生的,所以没来得及仔细研究,而我自己搭的FTP,运行了许久都没有重现过这样的错误,故只能说原因不详了。
  解决办法也简单,把FileList.Count改为IdFTP.DirectoryListing.Count就可以了。
阅读(988) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~