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) |