Indy 10 FTP空列表

问题描述:

我一直在接收来自我的一些用户的报告,当使用来自某些服务器(MS FTP)的idFTP.List()时,实际上收到的列表是空的(无文件) (非隐藏)文件在当前目录中。可能这是一个缺少解析器的情况?有趣的想法是,当我使用该程序从MY服务器(W2003上的MSFTP)获取列表时,一切似乎都正常,但在一些服务器上,我一直在遇到这个问题。Indy 10 FTP空列表

在D2010上使用最新的Indy10。任何想法?

IdFTPListParseWindowsNT坏了。

功能CheckListing返回false,因为一个坏解析:

if sDir = ' <DI' then begin {do not localize} 
    sDir := Copy(SData, 27, 5); 
    end else begin 
    sDir := Copy(SData, 26,28); <---------------BAD PASRSING 
    Result := TextStartsWith(sDir,' <DI') or IsNumeric(TrimLeft(sDir)); 
    if not Result then begin 
     Exit; 
    end;  

    end; 

谈到这部分,使它像在旧版本

if sDir = ' <DI' then begin {do not localize} 
     sDir := Copy(SData, 27, 5); 
     end; 

{ else begin 
     sDir := Copy(SData, 26,28); <---------------BAD PASRSING 
     Result := TextStartsWith(sDir,' <DI') or IsNumeric(TrimLeft(sDir)); 
     if not Result then begin 
      Exit; 
     end;  

    end;} 

工作Showuld解决您的问题。不过,不知道为什么要引入这个改变。

+0

谢谢,会尝试 – Lobuno 2010-04-06 15:54:50

+0

工程就像一个魅力!谢谢!! – Lobuno 2010-04-06 16:13:18

+0

IdFTPListParseWindowsNT的新版本已经签入,您能否验证问题是否已得到解决? – 2010-04-13 06:55:22

这通常是由目录列表中意外的事情引起的,这会导致列表解析器失败。 IIS可能同时支持NT风格和Unix风格的目录列表,因此请确保您在应用程序中包含两个列表解析器,并使用IdFTPLaistParse.pas::CheckListing在它们之间进行选择。如果这没有帮助它可能是愚蠢的日期或文件名中的东西;调试它的最好方法是添加代码以将原始目录列表保存到文件中,以便最终用户可以向您发送副本。

+0

谢谢克雷格。是的,我在我的单位使用IdAllFTPListParsers.pas,在最新更新到Indy tiburon之前,这些服务器与这些相同的服务器正常工作。我得到的原始列表是 03-31-10 06:55 PM 1458176 SOME_FILE.mdb 这对我来说似乎很标准。我会尝试去调试,看看为什么没有解析器选择它。 – Lobuno 2010-04-06 07:22:24

您确定您确实可以建立数据连接吗?直接列表命令通常是第一次请求这样的列表,并且如果您处于错误模式,通常是发生故障的点(即数据通道连接超时)。

+0

是的,我收到了原始列表,但似乎没有任何解析器会将其列出。 – Lobuno 2010-04-06 14:21:38