Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 16:06   #1
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
По умолчанию Проверка существования файла на FTP сервере

Подскажите, пожалуйста, как можно проверить существование файла на FTP сервере, кроме указанного ниже способа (или как его исправить)

Используя Indy (id:TidFTP)

Код:
function TForm1.FTPFileExists(const RemoteFileName: String): Boolean;
var i:integer;
begin
  Id.List (nil, '-la '+RemoteFileName);
  Result:=Id.DirectoryListing.Count > 0;
end;
если проверять этим способом, то если файл есть на сервере, то всё ок, а вот если его там нету, то почему-то вылетает ошибка 'No such file or directory'

И ещё вопрос: можно ли получить список всех файлов на сервере, используя Id.List или Id.DirectoryListing?
Я сколько искал в интернете, нашёл только через http, но хочется через ftp
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Старый 07.02.2011, 20:28   #2
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
По умолчанию

Ну что, неужели никто не знает???
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Старый 07.02.2011, 20:36   #3
exn
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 51
По умолчанию

ну и отлавливай исключение
exn вне форума Ответить с цитированием
Старый 15.02.2011, 13:41   #4
_Den_1984
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 54
По умолчанию

function TForm1.FTPFileExists(const RemoteFileName: String): Boolean;
var i:integer;
begin
try
Id.List (nil, '-la '+RemoteFileName);
Result:=Id.DirectoryListing.Count > 0;
except
showmessage('error');
end;
end;
_Den_1984 вне форума Ответить с цитированием
Старый 16.02.2011, 23:21   #5
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
По умолчанию

да, я так и написал уже

Код:
function TForm1.FTPFileExists(const RemoteFileName: String): Boolean;
var i:integer;
begin
 try
   Id.List (nil, '-la '+RemoteFileName);  
   Result:=Id.DirectoryListing.Count > 0;
 except
   Result:=false;
   showmessage('error');
 end;
end;
Но, если запускать не из delphi, а сам exe'шник, то (если файла нет) выполняется
showmessage('error')
потом вылетает "List index out of bounds (-1)" и программа ведёт себя так, как-будто Result=false...

а если из delphi, то "No such file or directory"
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Старый 18.02.2011, 16:02   #6
_Den_1984
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 54
По умолчанию

Если честно, всегда передаю результаты листинга файлов в отдельный TStringList, мне так удобнее анализировать да и ошибок пока не было .
вот как то так idFTP1.List(SList,'*.*',false);
_Den_1984 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существования компонента _-Re@l-_ Общие вопросы Delphi 3 29.12.2010 18:59
Проверка существования файла на сервере puKo PHP 10 09.08.2010 15:01
Проверка существования TEdit John_chek Общие вопросы Delphi 9 18.04.2008 14:56
Проверка существования директории Gorin Общие вопросы Delphi 7 25.11.2007 19:47
проверка существования окна Shade Win Api 3 22.07.2007 17:56