Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Как узнать скорость загрузки файла используя Indy.

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 19.07.2013, 07:45   #1
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Как узнать скорость загрузки файла используя Indy.

Как узнать скорость загрузки файла используя Indy.
  Ответить с цитированием
Старый 19.07.2013, 14:34   #2
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от Dimedrol1536Посмотреть сообщение
Как узнать скорость загрузки файла используя Indy.

Количество скаченных байт - (название стрима).size;
Делай это в таймере, onWork или в потоке. Записываешь в некоторую переменную.
Ожидание 1 секунда (потока, таймера не важно).
(название стрима).size минус переменная в которой записан предыдущий размер.
Так ты получишь объем скачанный за секунду.
Результат будет вроде как в байтах, но могу ошибаться, ибо не помню.
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Последний раз редактировалось metraz; 19.07.2013 в 14:36.
  Ответить с цитированием
Пользователь сказал cпасибо:
NebesaBag (19.07.2013)
Старый 19.07.2013, 20:49   #3
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Наркоманы, дуйте в школу, расстояние / время = скорость. Для особо непонятливых: кол-во байт / время загрузки = скорость загрузки
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 20.07.2013, 00:25   #4
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Наркоманы, дуйте в школу, расстояние / время = скорость. Для особо непонятливых: кол-во байт / время загрузки = скорость загрузки

Ок, а тогда время загрузки?
  Ответить с цитированием
Старый 20.07.2013, 01:27   #5
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Наркоманы, дуйте в школу, расстояние / время = скорость. Для особо непонятливых: кол-во байт / время загрузки = скорость загрузки

а я тогда что по-твоему расписал?

Добавлено через 2 минуты
Цитата:
Сообщение от Dimedrol1536Посмотреть сообщение
Ок, а тогда время загрузки?

При начале загрузки создаешь таймер который отсчитывает время. А по окончании выключаешь. Вот и время загрузки. Если тебе надо узнать время, за которое скачается, то действуй по тому принципу, который я скинул выше, но нужно оставшийся объем поделить на скорость.
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Последний раз редактировалось metraz; 20.07.2013 в 01:29. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 20.07.2013, 18:50   #6
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

metraz, особо я не понял про что ты.

Цитата:
Сообщение от metrazПосмотреть сообщение
Количество скаченных байт - (название стрима).size;

AWorkCount в IdHTTP1Work.
  Ответить с цитированием
Старый 20.07.2013, 20:02   #7
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от metrazПосмотреть сообщение
Ожидание 1 секунда (потока, таймера не важно).
(название стрима).size минус переменная в которой записан предыдущий размер.

Псевдокод:
Код:
lastReceived = 0
func progress_callback(obj, state)->
    speed = state.TotalReceived - lastReceived
    lastReceived = state.TotalReceived
    endTime = state.FileSize / speed
или
Код:
startTime= GetCurentTime()
func progress_callback(obj, state)->
    speed = state.TotalReceived / (GetCurentTime() - startTime).Seconds
    endTime = state.FileSize / speed
И какой вариант менее наркоманский?
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 20.07.2013 в 20:07.
  Ответить с цитированием
Старый 21.07.2013, 01:43   #8
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от YukikazeПосмотреть сообщение
И какой вариант менее наркоманский?

Оба наркоманские, не на Delphi написаны.
  Ответить с цитированием
Старый 21.07.2013, 20:02   #9
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от Dimedrol1536Посмотреть сообщение
Оба наркоманские, не на Delphi написаны.

________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Тигрь (27.07.2013), Zo_Om4eG (21.07.2013)
Старый 21.07.2013, 20:29   #10
 Пехотинец
Аватар для Zo_Om4eG
 
Zo_Om4eG на правильном пути
Регистрация: 20.12.2010
Сообщений: 58
Популярность: 50
Сказал(а) спасибо: 22
Поблагодарили 36 раз(а) в 15 сообщениях
Отправить сообщение для Zo_Om4eG с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

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

Я не знаю почему, но пост "Оба наркоманские, не на Delphi написаны." вызвал такие же эмоции, так и хотелось влепить facepalm, но не стал.


Dimedrol1536, тебе дали логику, а не готовый код. По сути программист не должен быть привязан к одному языку. Я могу тебе привести аналог на Delphi, но поможет ли он тебе?

Код:
procedure TMainForm.TimeTimer(Sender: TObject);
var DownloadStr, LeftStr, SpeedStr: string;
begin
 inc(TimeOfLoad); // Сколько секунд прошло
 
 { Форматирование для вывода }
 SpeedStr:=IntToStr(Round(SizeOfGetFile/1024/TimeOfLoad)); 
 DownloadStr:=FormatFloat('#.##', SizeOfGetFile/1024/1024); 
 if DownloadStr[1] = ','
 then
   DownloadStr:='0'+DownloadStr;
 LeftStr:=FormatFloat('#.##', (SizeOfFile-SizeOfGetFile)/1024/1024);
 if LeftStr[1] = ','
 then
   LeftStr:='0'+LeftStr;
 { Форматирование для вывода }

 { Вывод }
 lblSpeed.Caption:='Скорость: '+SpeedStr+' кб/с';
 lblDownload.Caption:='Скачалось: '+DownloadStr+' мб';
 lblLeft.Caption:='Осталось: '+LeftStr+' мб';
 { Вывод }
end;
Это код таймера, который нужно запускать в начале загрузки файла. Надеюсь нужные переменные объявишь сам и запишешь в них нужные значения.
  Ответить с цитированием
Старый 21.07.2013, 21:06   #11
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

Цитата:
Сообщение от Dimedrol1536Посмотреть сообщение
metraz, особо я не понял про что ты.

Что именно не понятно? (название стрима).size? Ты же качаешь через мемори стрим? Вот нужно этой командой получить его размер.
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 21.07.2013, 21:06   #12
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Как узнать скорость загрузки файла используя Indy.

У делфи слишком избыточный синтаксис, что бы на нем алгоритмы описывать, по этому я обычно использую псевдокод похожий на руби/питон

Код:
var
  startTime: DWORD;
procedure Download(url: string);
var
  Http: TIdHTTP;
  stream: TMemoryStream;
begin
  try
    Http := TIdHTTP.Create(nil);
    stream := TMemoryStream.Create; //ugly hack. На самом деле нужно сразу писать на диск, а не хранить весь хлам в памяти
    Http.OnWork := DoWork;
    startTime := GetTickCount;
    Http.Get(url, stream);
  finally
    stream.Free;
    Http.Free;
  end;
end;

procedure DoWork(sender: TObject; mode: TWorkMode; received: Int64);
var
  Http: TIdHTTP;
  ContentLength: Int64;
  downloadSpeed: Single;
  seconds: Single;
begin
  Http := TIdHTTP(sender);
  ContentLength := Http.Response.ContentLength;
  seconds := (GetTickCount - startTime) / 1000;

  downloadSpeed := received / seconds;
end;
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачивание файла из интернет,используя indy. создание прогрес-бара Dimedrol1536 Вопросы и ответы, обсуждения 3 19.02.2013 03:07
[Помогите!] Отображение загрузки файла в progressBar'е XRASER Вопросы и ответы, обсуждения 10 10.10.2012 15:32
[Помогите!] Ошибка загрузки файла version.ini Domenikanoo Общение и обсуждение CrossFire 3 28.03.2012 12:45

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 00:00.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net