Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Вниз

Indy и докачка файлов через IdFTP   Найти похожие ветки 

 
lunev_denis   (2009-09-05 16:45) [0]

на форме есть компонент IdFTP. При попытке загрузки файлов с сервера FTP - всё работает отлично и прекрасно. Но, когда я принудительно отключаю соединение с интернетом, то происходи ошибка. Это и логично. Так вот, собственно вопрос.
Как мне отловить эту ошибку и сделать так, чтобы файлы докачивались, а не скачивались по новой???
Заранее благодарен.
Вот код загрузки:
//*******************************//
TRY
If IdFTP1.Connected Then
Begin
IdFTP1.Disconnect;
End;
IdFTP1.Host:=FTP_Host;
IdFTP1.Port:=FTP_Port;
IdFTP1.Username:=FTP_Login;
IdFTP1.Password:=FTP_Password;
IdFTP1.Connect;
If IdFTP1.Connected then
//переходим в каталог закачки
IdFTP1.ChangeDir(FTP_Katalog);
//выводим список файлов
Spisok:=TStringList.Create();
IdFTP1.List(Spisok,"*.*",False);
//читаем список файлов

If Spisok.Count>0 Then
Begin
For i:=0 To Spisok.Count-1 Do
Begin
  IF IdFTP1.Size(Spisok.Strings)<>-1 THEN
  BEGIN
  Application.ProcessMessages;
  //смотрим размер текущего файла
  Label1.Caption:="Скачивается файл № "+IntToStr(i+1)+" из "+IntToStr(Spisok.Count)+
  " Имя файла: "+Spisok.Strings+" Размером: "+IntToStr(IdFTP1.Size(Spisok.Strings))+
  " Кбайт.";
  Application.ProcessMessages;
  //настраиваем полосу индикации
  Gauge1.Progress:=0;
  Gauge1.MinValue:=0;
  Gauge1.MaxValue:=IdFTP1.Size(Spisok.Strings);
  //скачиваем файл отмечая прогресс
  //причем прогресс отмечается в событии Work
  //компонента IdFTP1
  IdFTP1.Get(Spisok.Strings,KatalogUser+Spisok.Strings,True);
  END;
End;
//*******************************//
сразу же оговорюсь. когда я делаю метод
IdFTP1.Get(Spisok.Strings,KatalogUser+Spisok.Strings,True);
и при этом делаю параметр 3 (True) в значение False (типа не заменять файлы) и добавляю червертый параметр - значение True - я так понял, что именно он отвечает за закачку - то возникает исключение.
Как всё-таки сделать правильно


 
Сергей М. ©   (2009-09-06 17:04) [1]


> возникает исключение


Секретное ?


 
denis_lunev ©   (2009-09-07 10:42) [2]

Тут я разобрался. Сам невнимательно делал.
Надо было так:
IdFTP1.Get(Spisok.Strings,KatalogUser+Spisok.Strings[i],True); - если скачиваем весь файл
и
IdFTP1.Get(Spisok.Strings,KatalogUser+Spisok.Strings[i],False,True); - это если докачиваем файл
И всё окей.

Теперь следующая проблема. Я скачиваю фай и, допустим разрываю соединение с интернет. Сразу же выдается ошибка. Типа ошибка сокета. Как сделать так, чтоб ничего не показивалось, а программа тихо, мирно закрывалась?
вот я делаю так
Try
IdFTP1.Get(Spisok.Strings[i],Spisok.Strings[i],False,True);//докачиваю файл
Except
//наверное здесь надо обработать ошибку соединения???? Как??
End;


 
Сергей М. ©   (2009-09-07 10:52) [3]


> допустим разрываю соединение с интернет


> делаю так


И где же здесь фигурирует разрыв соединения с интернет ?


 
denis_lunev ©   (2009-09-07 10:58) [4]

так я просто ручками отключаю соединение в момент скачки или докачки.


 
Сергей М. ©   (2009-09-07 11:02) [5]

Ясно.

> чтоб ничего не показивалось, а программа тихо, мирно закрывалась


try
..
except
 Application.Terminate;
end;


 
denis_lunev ©   (2009-09-07 11:06) [6]

Вот спасибо.
А если не закрывалась, а просто сообщалось пользователю, что ошибка и все. Никаких исключений.
Типа. "Произошла ошибка соединения."


 
Сергей М. ©   (2009-09-07 11:58) [7]

try
..
except
 ShowMessage("ошибка и все. Никаких исключений. Типа. "Произошла ошибка соединения."")
end;


 
denis_lunev ©   (2009-09-07 12:27) [8]

Да. так примерно я и делаю, но помимо этого сообщения - появляется еще одно. "Socket Error #10054". Connection reset by peer. Как сделать, чтоб этого сообщения небыло?


 
Сергей М. ©   (2009-09-07 12:35) [9]

Чтобы его не было, следует перехватить и обработать исключение там, где оно возникает. А возникнуть оно у тебя может везде, где где ты обращаешься к объекту IdFTP, кроме собственно вызова метода Get.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1319021210
Alex1983
2011-10-19 14:46
2012.02.26
Ограничение работы программы


2-1321534792
upc
2011-11-17 16:59
2012.02.26
Не дать показаться форме


2-1321098441
a101081
2011-11-12 15:47
2012.02.26
StrToFloat()


2-1321552371
Laguna
2011-11-17 21:52
2012.02.26
Сообщение компилятра


2-1320762578
я
2011-11-08 17:29
2012.02.26
Вывод сообщения на экран





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский