Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 153

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Как сделать индикатор прогресса копирования файла с фтп?
Общий размер файла известен.
Копирую при помощи idFTP1.Get();

Т.е при копирование чтобы отображалось размер скопированного файла в ProgressBar1
Что бы пользователь наглядно видел прогресс
Как ProgressBar1 отобразить я знаю, а вот как получить сколько я скопировал байт файла с фтп не знаю…
Т.е как передать в ProgressBar1.position:= // количество байт уже скопированных

А еще желательнее если их несколько то отображать в ProgressBar1 общий размер всех файлов

Приложение:
  1. Var
  2. s:string;
  3. i:Integer;
  4. size:Integer;
  5. data:string;
  6. dat:TDateTime;
  7. name:string;
  8. FTPList: TStringList;
  9. Begin
  10.  
  11.  
  12.  
  13.  
  14. if FTPList.Count > 0 then
  15. for I := 0 to FTPList.Count - 1 do
  16. begin
  17. size:=IdFTP1.DirectoryListing.Items[i].Size;
  18. name:=IdFTP1.DirectoryListing.Items[i].FileName;
  19. ProgressBar1.Min:=0;
  20. ProgressBar1.Max:=size;
  21.  
  22.  
  23.  
  24.  
  25. End;


nar Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: nar (статус: Посетитель)
Вопрос отправлен: 4 апреля 2011, 17:32
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: F.@.E.R

Здравствуйте, nar!
Попробуй вот этот код.
Должен работать.

Приложение:
  1. procedure TForm1.idFTP1Work
  2. begin
  3. if FShowStep then
  4. PostMessage(Steping.Handle, PROGRESS, AWorkCount);
  5. end;
  6. procedure TStepProgress.WndProc
  7. begin
  8. case Msg.Msg of
  9. PROGRESS : ProgressBar1.Position:=Msg.WParam;
  10. begin
  11. ProgressBar1.Position:=0;
  12. ProgressBar1.Max:=Msg.WParam;
  13. end
  14. else
  15. inherited;
  16. end;


Ответ отправил: F.@.E.R (статус: 1-ый класс)
Время отправки: 4 апреля 2011, 19:48


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 5 апреля 2011, 09:51; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 4 апреля 2011, 17:58 [#1]:

у IdFTP должно быть событие OnWork. оно будет вызываться каждый раз, когда пришли новые данные для файла который принимается/передается. и ещё два событие OnWorkStart и OnWorkStop (названия могу немного ошибаться)
Галочка "подтверждения прочтения" - вселенское зло.
F.@.E.R

F.@.E.R (статус: 1-ый класс), 4 апреля 2011, 18:50 [#2]:

Ну если известен полный размер файла, то отображать сколько уже принято и
Отображать в TTrackBar
nar

nar (статус: Посетитель), 5 апреля 2011, 09:39 [#3]:

Спасибо за код и мысль как сделать.
вопрос решен
nar

nar (статус: Посетитель), 5 апреля 2011, 09:51 [#4]:

забыл сказать :(
сделал обработчик события OnWork, и все крутится :)
спасибо Вадим К

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.02 сек.