procedure TForm1.IdFTPServer1ListDirectory(ASender: TIdFTPServerThread;
  const APath: String; ADirectoryListing: TIdFTPListItems);
  
  procedure AddlistItem( aDirectoryListing: TIdFTPListItems; Filename:string; ItemType: TIdDirItemType; size: int64; date: tdatetime ) ;
  var
    listitem: TIdFTPListItem;
  begin
    listitem := aDirectoryListing.Add;
    listitem.ItemType := ItemType;
    listitem.FileName := Filename;
    listitem.OwnerName := 'anonymous';
    listitem.GroupName := 'all';
    listitem.OwnerPermissions := '---';
    listitem.GroupPermissions := '---';
    listitem.UserPermissions := '---';
    listitem.Size := size;
    listitem.ModifiedDate := date;
  end;var
  DirInfo: tsearchrec;
  FindResult,i: integer;
  Temp:PChar;
begin
  ADirectoryListing.DirectoryName := apath;
    FindResult := FindFirst( WorkDirectory.Text+APath+'*.*',faAnyFile, DirInfo ) ;
    while ( FindResult = 0 ) do
    begin
      if ( DirInfo.Attr and faDirectory > 0 ) then
        AddlistItem( ADirectoryListing, DirInfo.Name, ditDirectory, DirInfo.size,FileDateToDateTime( DirInfo.Time ) )
        //如果结果是目录
      else
        AddlistItem( ADirectoryListing, DirInfo.Name, ditFile, DirInfo.size,FileDateToDateTime( DirInfo.Time ) ) ;
      FindResult := FindNext( DirInfo ) ;
    end;
   FindClose( DirInfo ) ;
    //查看结束关闭相应的查找过程
end;我用flashFXP登陆  列举FTP服务器为空,请问代码错在哪里?

解决方案 »

  1.   

    procedure TdmVFTPServer.AddFTPFileList(ADirectoryListing: TIdFTPListItems;
      AFolder: string);
    var
      w32fd: TWin32FindData;
      h: THandle;
      lTime: TFileTime;
      sTime: TSystemTime;
    begin
      if not DirectoryExists(AFolder) then Exit;
      if AFolder[Length(AFolder)] = '\'
         then AFolder := AFolder + '*.*'
         else AFolder := AFolder + '\*.*';
      h := Windows.FindFirstFile(PChar(AFolder), w32fd);
      while h <> INVALID_HANDLE_VALUE do
        begin
          with ADirectoryListing.Add, w32fd do
            begin
              FileName := ExtractFileName(cFileName);
              if (dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0
                 then ItemType := ditFile
                 else ItemType := ditDirectory;
              Size := nFileSizeHigh * MAXDWORD + nFileSizeLow;
              FileTimeToLocalFileTime(ftCreationTime, lTime);
              if FileTimeToSystemTime(lTime, sTime)
                 then ModifiedDate := EncodeDate(sTime.wYear, sTime.wMonth, sTime.wDay) + EncodeTime(sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliSeconds)
                 else ModifiedDate := Now;
              GroupName := vft_FTP;
              OwnerName := vft_FTP;
              UserPermissions := 'rw-';
              GroupPermissions := 'rw-';
              OwnerPermissions := 'rw-';
             end;
          if not Windows.FindNextFile(h, w32fd) then Break;
        end;
      Windows.FindClose(h);
    end;procedure TdmVFTPServer.FTPServerListDirectory(ASender: TIdFTPServerThread;
      const APath: String; ADirectoryListing: TIdFTPListItems);...
    AddFTPFileList(ADirectoryListing, ConvertFTPPathToLocalPath(APath, false));
    ...呵呵,上面的就行的:)
    LYFTP也不错的
    _____________________
    http://lysoft.7u7.net
      

  2.   

    和你的HOMEDIR有很大关系,未必就是这个地方的错误