В пакет добавлен набор компонентов для работы с FTP сервисами. Интерфес построен на использовании менеджеров, те есть один глобальный компонент и компоненты для различных действий
Этот топик читают: Гость
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
карма: 22 |
| ||
Голосовали: | Konst |
Ответов: 4628
Рейтинг: 749
|
|||
Это вещь!!!
Только, как мне кажется, событие onError стоило бы добавить в каждый компонент, а не только в FTP_Client. Просто усложняется обработка ошибок (например, в случае ошибки повторить нужное действие). |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): Только, как мне кажется, событие onError стоило бы добавить в каждый компонентМожно попробовать сделать, но трансформировать ошибки сверху вниз не получится, только текущие можно сделать. А ты сам пример смотрел, там FTP-коммандер реализован, можно попробовать компоненты на реальном сервисе ------------ Дoбавленo в 13.42: Попробовал добавить только каждому, мне не понравилось. Надо по всей схеме собирать ошибки в одну кучу, или делать кучу обвески |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
В каждом компоненте выдавать только те ошибки, которые происходят при выполнении его операций.
nesco писал(а): Надо по всей схеме собирать ошибки в одну кучуНу, смотри сам. Когда наберется некоторое количество паттернов использования, можно будет дальше думать. Точку onError все же нужно размещать после основных методов. Пример пробовал на двух серверах - фантастика. Можно еще добавить в какой-нибудь компонент проверку на существование файла и получение атрибутов, как у FileSearch, но для указанного файла (чтобы не перечислять содержимое каталога для этого). Или добавить элемент FTP_FileAttributes... Также в ReadWrite добавить режим докачки файла (ну и метод для установки текущей позиции чтения/записи - REST). Можно добавить свойство для записываемого файла на сервер - заменить/дописать. |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): Пример пробовал на двух серверах - фантастика. Можно еще добавить в какой-нибудь компонент проверку на существование файла и получение атрибутовПробовал, такая чешуя получается, мама не горюй. Ты В Тотале пробовал посмотреть атрибуты для файлов на FTP-сервере Netspirit писал(а): акже в ReadWrite добавить режим докачки файла (ну и метод для установки текущей позиции чтения/записи - REST). Можно добавить свойство для записываемого файла на сервер - заменить/дописать.А разве дозапись поддерживается для FTP-сессий стандартными средствами WinAPI |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Отдельных функций для этого нет. Просто перед началом цикла с InternetReadFile/InternetWriteFile выполняется функция FtpCommand (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384133(v=vs.85).aspx) с командой "REST <позиция>"
Некоторые соображения по работе с потоками. После использования функций NewReadFileStream/NewWriteFileStream нужно выполнять проверку
Также st.Write возвращает количество записанных данных. Нужно проверять равно ли оно тому количеству, которое требовалось записать. Если нет - значит ошибка записи (например, закончилось место на диске или ещё что-то) |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): Можно еще добавить в какой-нибудь компонент проверку на существование файлаЭто же может делать FTPC_FileSearch, у него и событие есть специальное -- onNotFound. В FTP коммандере используется же поиск файла |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
nesco писал(а): такая чешуя получается, мама не горюйFtpFindFirstFile+InternetCloseHandle без дальнейшего цикла с InternetFindNextFile. |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): Отдельных функций для этого нет. Просто перед началом цикла с InternetReadFile/InternetWriteFile выполняется функция FtpCommand (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384133(v=vs.85).aspx) с командой "REST <позиция>"Тут пока я не представляю как сделать, а тем более проверить это в работе ------------ Дoбавленo в 14.24: Netspirit писал(а): без дальнейшего цикла с InternetFindNextFileА причем тут дальнейший цикл, когда сами атрибуты получаются совсем непонятные Однофайловые операции можно же реализовать в FTPC_FileSearch, для чего ты думаешь там стоит точка Mask |
|||
карма: 22 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
nesco писал(а): Однофайловые операции можно же реализовать в FTPC_FileSearch, для чего ты думаешь там стоит точка Mask Оно то можно, речь идет о юзабилити: при работе со своей машиной пользователь привыкнет использовать FileAttributes, а тут сразу и не догадается, что FTP_FileSearch надо использовать. |
|||
карма: 10 |
|
Ответов: 1343
Рейтинг: 31
|
|||
установки прав для файлов не хватает а так норм, если делать нормальный FTP клиент то это будет вовсе не особо хороший клиент без установки прав (права лучше сделать через те самые цифорки, к примеру 7777 все права на файл)
|
|||
карма: 2 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Rysik писал(а): то это будет вовсе не особо хороший клиент без установки правИ какие команды FTP устанавливают права на файл ------------ Дoбавленo в 19.17: Netspirit, я не нашел в описаниях команд FTP, команды "REST <позиция>". Но вот подумать над созданием компонента FTPC_Command надо бы подумать |
|||
карма: 22 |
|
Ответов: 1343
Рейтинг: 31
|
|||
карма: 2 |
|
Ответов: 4628
Рейтинг: 749
|
|||
nesco писал(а): я не нашел в описанияхhttp://www.rsdn.ru/forum/network/841847.all Там есть проблема при использовании FtpOpenFile, потому что не получится вклинить "REST" перед "RETR". FtpOpenFile заменяется на последовательность FtpCommand с "TYPE I", "PASV", "REST", "RETR". Я сделал рабочий вариант, оставил на работе. После выходных подправлю и покажу. И ещё, в наших wininet.pas неправильное объявление FtpCommand - нужно добавить ещё один параметр. |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Rysik писал(а): уже всё есть, осталось занести и подредактировать...Может где-то и есть, но у нас я пока не видел. Так что умничать я бы настоятельно советовал в другом месте, а у нас желательно пруфами делиться, между прочим, или советами, которые несут хоть какую-то полезную информацию. Rysik писал(а): ну а в крацах это команда CHMODГде пруф на описание этой команды Где уверенность, что эта команда будет отработана любым сервером Кстати, это в равной мере касается и команды REST. Поэтому, неплохо бы сначал получить набор поддерживаемых команд командой HELP, и проверить вхождение туда нестандартных команд |
|||
карма: 22 |
|