Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перебрать все файлы с FTP ?


user ©   (2008-08-01 16:12:00) 

Подскажите, как перебрать  файлы в цикле с ftp..
IDFTP.Get ('назв. файла на FTP') ,'путь на локальной машине.txt');


user   (2008-08-05 15:37:00) [1]

спасибо всем за ответы, все получилось!


user   (2008-08-05 15:37:00) [2]

спасибо всем за ответы, все получилось!


Anatoly Podgoretsky   (2008-08-05 14:43:00) [3]

Количество форматов более 50, а Инди поддерживает только несколько.


user   (2008-08-05 14:25:00) [4]

не совсем поняла код....пишу так ...
но теперь выходит другая ошибка :
begin
sl:=TStringList.Create;
try
with IdFTP do
begin
  Host := '10.1.6.23';
  Password := 'XXX';
  Username := 'CR';
  Connect;
  ChangeDir ('CSVED');//('cdr');

   List(sl, ' ',False);  
  for i:=0 to idFTP.DirectoryListing.Count-1 do
   begin
здесь выходит  Ошибка: Unknown FTP Listing format


Dennis I. Komarov   (2008-08-05 10:00:00) [5]

> [1] Rouse_ ©   (01.08.08 16:40)

А информация из
> hFileConnection := FtpFindFirstFile(FConnect, pChar('*.*')
> , FindData,
>       INTERNET_FLAG_NEED_FILE , 0);

Куда пропала?


Dennis I. Komarov   (2008-08-04 14:26:00) [6]

> [0] user   (01.08.08 16:12)

List...


Rouse_   (2008-08-01 16:40:00) [7]

эммнь... так пойдет?

uses
 WinInet;

procedure TForm27.Button1Click(Sender: TObject);

 procedure FindFTPFiles(FConnect: HINTERNET; Dir: String);
 var
   hFileConnection: HINTERNET;
   FindData: TWin32FindData;
   SubDirs: TStringList;
   I: Integer;
 begin
   SubDirs := TStringList.Create;
   try
     FtpSetCurrentDirectory(FConnect, PChar(Dir));
     hFileConnection := FtpFindFirstFile(FConnect, pChar('*.*'), FindData,
       INTERNET_FLAG_NEED_FILE , 0);
     if hFileConnection <> nil then
     try
       ZeroMemory(@FindData, SizeOf(TWin32FindData));

       while InternetFindNextFile(hFileConnection, @FindData) do
       begin
         if
           (StrPas(FindData.cFileName) = '.') or
           (StrPas(FindData.cFileName) = '..') then
           Continue;

         if FindData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
         begin
           SubDirs.Add(Dir + String(FindData.cFileName) + '/');
           Memo1.Lines.Add(Dir + String(FindData.cFileName) + '/');
         end
         else
           Memo1.Lines.Add(Dir + String(FindData.cFileName));

         Application.ProcessMessages;
         //if Memo1.Lines.Count > 100 then Break;
       end;

     finally
       InternetCloseHandle(hFileConnection);
     end;

     for I := 0 to SubDirs.Count - 1 do
       FindFTPFiles(FConnect, SubDirs.Strings[I]);

   finally
     SubDirs.Free;
   end;
 end;

var
 FSession, FConnect: HINTERNET;
 FHost: String;

begin
 FHost := 'ftp.synclub.ru';
 FSession := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
 if not Assigned(FSession) then Exit;
 try
   FConnect := InternetConnect(FSession, PChar(FHost),
     INTERNET_DEFAULT_FTP_PORT, PChar('synclub'),
     PChar('synclub'), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
   if not Assigned(FConnect) then Exit;
   try
     FindFTPFiles(FConnect, '/jazz/3rd Force/');
     Memo1.Lines.Add('=====================================');
     Memo1.Lines.Add('All done');
   finally
     InternetCloseHandle(FConnect);
   end;
 finally
   InternetCloseHandle(FSession);
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо