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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 11:55   #1
Nebro
Пользователь
 
Регистрация: 04.03.2011
Сообщений: 22
По умолчанию idHTTP Status Download

Как отобразить скорость загрузки и размер файла в TLabel?
Загрузка файла производится с пoмoщью TidHTTP.

Примeр:

Код:
case Combobox1.ItemIndex of
0:
    begin
    Form5.Show;
    s:='http://тритатушeчкитата.ua';
    LoadStream := TMemoryStream.Create; // выделение памяти под переменную
    idHTTP1.Get(s, LoadStream); // загрузка в поток данных из сети
    LoadStream.SaveToFile('.\v19.exe'); // сохраняем данные из потока на жестком диске
    LoadStream.Free; // освобождаем память
    end;
Nebro вне форума Ответить с цитированием
Старый 04.03.2011, 12:06   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обратите внимание на события OnWork*** компонента.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2011, 12:33   #3
Nebro
Пользователь
 
Регистрация: 04.03.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
обратите внимание на события OnWork*** компонента.
Спасибo, не затруднит Вас дать пример кода?
Nebro вне форума Ответить с цитированием
Старый 04.03.2011, 12:57   #4
Robin_
Пользователь
 
Регистрация: 02.05.2008
Сообщений: 66
По умолчанию

Пример с ProgressBar

Код:
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
 ProgressBar2.Position := AWorkCount;
 Application.ProcessMessages;
end;

procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  ProgressBar2.Max := AWorkCountMax;
end;

procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  ProgressBar2.Position := 0;
end;
Robin_ вне форума Ответить с цитированием
Старый 04.03.2011, 13:14   #5
Nebro
Пользователь
 
Регистрация: 04.03.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Robin_ Посмотреть сообщение
Пример с ProgressBar

Код:
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
 ProgressBar2.Position := AWorkCount;
 Application.ProcessMessages;
end;

procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  ProgressBar2.Max := AWorkCountMax;
end;

procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  ProgressBar2.Position := 0;
end;
С TProgressBar нe надo. Нужнo с TLabel.
Nebro вне форума Ответить с цитированием
Старый 04.03.2011, 13:20   #6
Robin_
Пользователь
 
Регистрация: 02.05.2008
Сообщений: 66
По умолчанию

Я тебе просто пример дал, а дальше сам думай
Robin_ вне форума Ответить с цитированием
Старый 08.03.2011, 18:45   #7
Nebro
Пользователь
 
Регистрация: 04.03.2011
Сообщений: 22
По умолчанию

Собствeннo ап. Прoблeма нe рeшeна.
Nebro вне форума Ответить с цитированием
Старый 08.03.2011, 21:56   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, в событии OnWorkBegin параметр AWorkCountMax это размер файла.
а в ONWork AWorkCount это сколько уже скачано.
используя эти данные можно так же и скорость вычислить(максимум могу алгоритм с наброском кода(проверить код просто не где), ибо сейчас я в шарпе погряз)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.03.2011, 22:21   #9
Fok
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 43
По умолчанию

Размер файла ещё можно узнать , сделав предварительный запрос :
Код:
 Razmer:integer;
 idHTTP1.Head(URL);
 Razmer :=idHTTP1.Response.ContentLength;
Возник вопрос как экстренно остановить поток MemoryStream ?
Fok вне форума Ответить с цитированием
Старый 08.03.2011, 22:33   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вообще то MemoryStream сам ничего не делает, останавливать надо idhttp вообще то.
Цитата:
предварительный запрос
ну это от целей зависит.
при многопоточном загрузчике это приемлимо, а при простом однопоточном лучше использовать OnWorkBegin
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Looking For idhttp Download/resume Function yassinov Работа с сетью в Delphi 0 03.01.2011 17:40
TICQClient работа с X-Status Alter Общие вопросы Delphi 2 06.07.2010 20:47
Status bar Delphi RaTaMaHaTTa Помощь студентам 4 04.10.2009 14:30