Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск всех файлов на ФТП, поиск файлов на фтп 
:(
    Опции темы
AndreyZ53
Дата 30.3.2016, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: 1
Всего: 2



Здравствуйте! Перерыл весь Интернет, ничего толького не нашел. Суть задачи - организовать поиск по всему фтп. То есть, на фтп есть папка SDO, и в ней найти все файлы, со всеми расширениями, но сложность задачи состоит в том, что структура может доходить до такой:

/SDO/41/246000/KTA4634/IN/

И таких папок множество на фтп, нужно залезть в каждую и там найти файлы и вывести их в список.

Нашел на форумах вроде бы как работающие примеры, например вот:

Выделить всёРазвернуть кодкод Pascal/Delphi
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
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 := to SubDirs.Count - 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, nilnil0);
 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;


Но он не подходит, он не может дойти до последний папки, максимум заходит на три уровня, то есть до сюда /SDO/41/246000/ и то не во все папки, не могу вообще понять смысл, почему так.

Пробовал и Synapse и idFTP, особо ничего по этому вопросу так и не нашел. Кто делал что-то подобное, поделитесь пожалуйста опытом!
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
magnet
Дата 31.3.2016, 14:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Данному вопросу лет уже больше чем тебе. Надеюсь, что ЯП не принципиален?
http://forum.vingrad.ru/index.php?showtopi...t&p=1810834
ну и ядекс в помощь https://yandex.ru/search/?text=ftp рекурсивный поиск

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0868 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.