Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/37: Рейтинг темы: голосов - 37, средняя оценка - 4.89
Evg
Эксперт CАвтор FAQ
21160 / 8176 / 628
Регистрация: 30.03.2009
Сообщений: 22,475
Записей в блоге: 30
1

Получение списка файлов через TIdFTP

05.03.2011, 17:05. Показов 7739. Ответов 6
Метки нет (Все метки)

У класса TIdFTP есть метод List, который получает список файлов но в виде строкового представления

Код
list [-r--r--r-- 1 ftp ftp          40606 Jan 01  2009 l0101000.log]
list [-r--r--r-- 1 ftp ftp          46779 Jan 01  2009 l0101001.log]
list [-r--r--r-- 1 ftp ftp           8430 Jan 02  2009 l0101002.log]
list [-r--r--r-- 1 ftp ftp           4757 Jan 01  2010 l0101003.log]
list [-r--r--r-- 1 ftp ftp         134129 Jan 01  2010 l0101004.log]
list [-r--r--r-- 1 ftp ftp         692718 Jan 02  2010 l0101005.log]
list [-r--r--r-- 1 ftp ftp              0 Jan 01  2011 l0101006.log]
list [-r--r--r-- 1 ftp ftp              0 Jan 01  2011 l0101007.log]
list [-r--r--r-- 1 ftp ftp              0 Jan 01  2011 l0101008.log]
list [-r--r--r-- 1 ftp ftp              0 Jan 01  2011 l0101009.log]
Я посмотрел, есть некое свойство DirectoryListing, которое призвано разгребать это дело, но я так и не могу понять, как этим делом пользоваться. Если пытаюсь достать IdFTP->DirectoryListing->Count, то мне возвращает 0. Как правильно с этой штукой общаться?

Добавлено через 2 минуты
Вот нарыл ещё ссылку
http://www.indyproject.org/KB/... return.htm

Судя по всему речь идёт о том, что есть какие-то парсеры такого текста и их надо добавить. Но куда нажимать я не понимаю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2011, 17:05
Ответы с готовыми решениями:

Закачка файла через TidFTP
День добрый уважаемые гурру. Необходимо на FTP загрузить файлы. Ниже описанным текстом работаю с...

Получение списка файлов на сервере
1. Пишу простенький ftp-клиент в C++Builder c использованием компонента ClientSocket. 2. Тестирую...

Получение списка файлов из OpenPictureDialog...
Как получить список выбранных файлов из OpenPictureDialog?

Получение списка файлов каталога
Подскажите метод для возвращения списка файлов в определенном каталоге (папке) ?

6
LK
Заблокирован
05.03.2011, 17:50 2
Может,поможет...
C++
1
2
3
4
5
6
7
8
/*что сделать, чтобы работал DirectoryListing компоненты TIdFTP?
Подключить модули для парсинга строк (имен файлов + атрибуты + размер), которые возвращает FTP.
Это: IdFTPListParseBase,IdFTPListParseAS400,IdFTPListParseBullGCOS7,IdFTPListParseBullGCOS8 и так далее. Затем — стандартно:*/
FTP.List;
for i:=0 to Pred(FTP.DirectoryListing.Count) do
   begin
ListBox1.Items.Add(FTP.DirectoryListing.Items[i].FileName);
   end;
0
Evg
Эксперт CАвтор FAQ
21160 / 8176 / 628
Регистрация: 30.03.2009
Сообщений: 22,475
Записей в блоге: 30
05.03.2011, 22:53  [ТС] 3
Дельфёвый вариант видел. Теперь как это использовать на Си++? В List и так и сяк параметры подавал - не помогает
0
LK
Заблокирован
05.03.2011, 22:59 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "IdAllFTPListParsers.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "IdExplicitTLSClientServerBase"
...
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  IdFTP1->Username = "anonymous";
  IdFTP1->Password = " [email]XXXX@XXXXX.COM[/email] ";
  IdFTP1->Host = "ftp.borland.com";
  IdFTP1->Port = 21;
  IdFTP1->AutoLogin = true;
  IdFTP1->Connect();
  IdFTP1->List( NULL, "", true);
  for(int i = 0; i < IdFTP1->DirectoryListing->Count; ++i) {
    ...
  }
}
0
Evg
Эксперт CАвтор FAQ
21160 / 8176 / 628
Регистрация: 30.03.2009
Сообщений: 22,475
Записей в блоге: 30
05.03.2011, 23:22  [ТС] 5
Именно так и делаю, но выдаёт 0 элементов. Вот и возникло подозрение, что по умолчанию парсер настроен на виндовые сервера, а у меня юниксовый сервер
0
LK
Заблокирован
06.03.2011, 00:50 6
может, это ?
1. Go to the Indy website and download the Indy 10 package.
2. Find the file IdAllFTPListParsers.pas and add it to your project (this file doesn't come with C++ Builder 2007 by default)
3. Go to the properties of your file and add this to the Include Path
and Library Path:
C:\Program Files\CodeGear\RAD Studio\5.0\lib\Indy10
And that's it. Now IdFTP1->DirectoryListing->Count will not return 0.
1
Evg
Эксперт CАвтор FAQ
21160 / 8176 / 628
Регистрация: 30.03.2009
Сообщений: 22,475
Записей в блоге: 30
06.03.2011, 11:13  [ТС] 7
Возможно, что это. А как эту хрень добавить не в свойства компилятора а как-нибудь прилепить к исходникам? Т.е. чтобы если я потащу свой исходник на чужую машину, чтобы без всяких плясок с бубнами можно было скомпилять

Добавлено через 37 минут
Вот ещё обсуждение нашёл http://www.delphigroups.info/3/4/137871.html
Среди прочего там утверждается, что в 2007'м борланде уже имеется Indy версии 10.*. Хз почему товарищ в теме не смог в итоге получить то, что нужно, наверное не было чёткого понятия, что там требовалось. Конкретно в моём случае на Borland-2007 проблема решилась следующим образом:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <IdFTPListParseBase.hpp>
#include <IdFTPListParseUnix.hpp>
 
// Где-то нужно зарегистрировать парсер. Утверждается, что это надо запустить
// после того, как главное окно сконструировано. Я не заморачивался и воткнул пока
// в точку начала работы с FTP. В итоге оно вызывается несколько раз, но
// проблем от этого нет. Имя класса TIdFTPLPUnix нашёл в файле
// IdFTPListParseUnix.hpp - это я к тому, что если потребуются другие типы парсеров,
// то как их искать 
RegisterFTPListParser ( __classid (TIdFTPLPUnix));
 
IdFTP->Username = ...;
...
IdFTP->List (NULL, "", true);
// Здесь IdFTP->DirectoryListing->Count уже работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2011, 11:13

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Получение списка файлов в каталоге
Добрый день. подскажите пожалуйста, как в С++ получить список файлов в каталоге. Делаю так:...

Получение списка файлов на FTP сервере
Всем доброго времени суток. Кто знает как получить список файлов на FTP сервере? Сам дошёл до...

Получение списка файлов, на которые ссылаются ярлыки
дано: 1)ярлыки с рабочих столов юзеров.(ярлыки каждого юзера в отдельной папке) 2)C++ builder 6...

FTP: получение списка файлов из потока. Как вывести список файлов из директории?
доброго времени суток. пытаюсь написать свой FTP-клиент. отправил серверу команду LIST, и в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.