С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/50: Рейтинг темы: голосов - 50, средняя оценка - 4.50
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30

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

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

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

Code
1
2
3
4
5
6
7
8
9
10
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2011, 17:05
Ответы с готовыми решениями:

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

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

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

6
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.03.2011, 17:50
Может,поможет...
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
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
05.03.2011, 22:53  [ТС]
Дельфёвый вариант видел. Теперь как это использовать на Си++? В List и так и сяк параметры подавал - не помогает
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.03.2011, 22:59
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
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
05.03.2011, 23:22  [ТС]
Именно так и делаю, но выдаёт 0 элементов. Вот и возникло подозрение, что по умолчанию парсер настроен на виндовые сервера, а у меня юниксовый сервер
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
06.03.2011, 00:50
может, это ?
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
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
06.03.2011, 11:13  [ТС]
Возможно, что это. А как эту хрень добавить не в свойства компилятора а как-нибудь прилепить к исходникам? Т.е. чтобы если я потащу свой исходник на чужую машину, чтобы без всяких плясок с бубнами можно было скомпилять

Добавлено через 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2011, 11:13
Помогаю со студенческими работами здесь

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

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

Получение списка файлов на FTP сервере
Всем доброго времени суток. Кто знает как получить список файлов на FTP сервере? Сам дошёл до такого: try { IdFTP1-&gt;Username =...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru