FTP (RadStudio 2007->IndyClients->TIdFTP)
От: Feador  
Дата: 28.05.10 13:43
Оценка:
Здравствуйте. Пишу программу для работы с FTP на языке C++ в среде RadStudio 2007. Программа должна выполнять копию данных с FTP-сервера. В процессе кодирования наткнулся на кучу вопросов, многие связаны они с компонентой TIdFTP из набора IndyClients. В классе есть возможность получать имена и атрибуты несколькими разными способами. Самый простой, насколько я понял, — это через параметр ListResult, представляющий TStrings* . Но неудобство такого способа в том, что строки возвращаются в таком же формате, как и в cmd.exe, вида
-rw-r--r-- 1 2143 600 6590 May 26 19:59 .htaccess

Другими словами, надо ещё и анализировать строку, что в восторг не приводит. Что же, есть и другой способ — использовать DirectoryListing. Однако, отладчик показывает, что этот массив не заполняется. ListResult заполняется, а DirectoryListing — нет. В хелпе указано, что:
DirectoryListing is a read-only TIdFTPListItems property that implements a container for TIdFTPListItem instances created from the result values for the List or Status methods. Авторский перевод — пока не используете List() или Status(), DirectoryList не заполнится. Но дело в том, что функция List() вызывается, а от этого список все равно не заполняется. Тогда возвращаемся к ListResult, просто надо написать обработчик строки.

Однако, не все так просто. Как видно выше, на каком-то сервере файл характеризуется строкой вида
-rw-r--r-- 1 2143 600 6590 May 26 19:59 .htaccess
, а вот на другом сервере зато строка немного отличается:
-rw-r--r-- 1 1595 600 13550 Nov 15 2009 .htaccess

То есть форматы дат разные, на одном время, на другом — год((.

Вопросы следующие :
1) что сделать, чтобы работал DirectoryListing компоненты TIdFTP?
2) почему с разных (да даже и с одного) серверов разные файлы характеризуются разным форматом веремени? (в документации объяснения не нашел, может, плохо искал)? есть ли ещё какие-нибудь подводные камни при работе с серверами FTP?
3) если знаете, порекомендуйте нормальную проверенную компоненту для работы с FTP.
radstudio c++ builder c++ ftp tidftp
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.