  | 
	
		
	
	
		Как узнать скорость загрузки файла используя Indy. - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе | 
	 
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            19.07.2013, 07:45
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Фельдмаршал  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 22.02.2011  
                
                
                
                 Сообщений: 949
                   
 Популярность: 34698  
                  
	 Сказал(а) спасибо: 939  
	
		
			
				Поблагодарили 2,534 раз(а) в 911 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
            
               
    Как узнать скорость загрузки файла используя Indy.
     
         
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            19.07.2013, 14:34
            
            
         | 
        
             
            #2
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Старший сержант  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 25.12.2011  
                
                
                
                 Сообщений: 191
                   
 Популярность: 5259  
                  
	 Сказал(а) спасибо: 31  
	
		
			
				Поблагодарили 235 раз(а) в 135 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
            
               
    
  
        
        
          
                
                
                  
                        
                          | 
                        
                        Цитата: | 
                        
                          | 
                   
                 
                 | 
                
                 | 
                
                
                
                  
                        
                          | 
                        
                        
                        Сообщение от Dimedrol1536  | 
                        
                          | 
                   
                 
                 | 
                
                
                
                 | 
           
         
        
          
                | 
                 | 
                 | 
                
                 | 
           
          
                | 
                 | 
                
                Как узнать скорость загрузки файла используя Indy.
                 | 
                
                 | 
           
          
                
                  | 
                
                 | 
                
                  | 
           
         
         | 
   
 
Количество скаченных байт  - (название стрима).size; 
Делай это в таймере, onWork или в потоке. Записываешь в некоторую переменную. 
Ожидание 1 секунда (потока, таймера не важно). 
(название стрима).size минус переменная в которой записан предыдущий размер. 
Так ты получишь объем скачанный за секунду.  
Результат будет вроде как в байтах, но могу ошибаться, ибо не помню.
     
          
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось metraz; 19.07.2013 в 14:36.
                    
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
	
		
			| 
				
					Пользователь сказал cпасибо:
				
				
				
			 | 
			 | 
		 
	 
  
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            19.07.2013, 20:49
            
            
         | 
        
             
            #3
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Сержант  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 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
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Фельдмаршал  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 22.02.2011  
                
                
                
                 Сообщений: 949
                   
 Популярность: 34698  
                  
	 Сказал(а) спасибо: 939  
	
		
			
				Поблагодарили 2,534 раз(а) в 911 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            20.07.2013, 01:27
            
            
         | 
        
             
            #5
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Старший сержант  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 25.12.2011  
                
                
                
                 Сообщений: 191
                   
 Популярность: 5259  
                  
	 Сказал(а) спасибо: 31  
	
		
			
				Поблагодарили 235 раз(а) в 135 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось metraz; 20.07.2013 в 01:29.
                    
                    
                        Причина: Добавлено сообщение
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            20.07.2013, 18:50
            
            
         | 
        
             
            #6
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Фельдмаршал  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 22.02.2011  
                
                
                
                 Сообщений: 949
                   
 Популярность: 34698  
                  
	 Сказал(а) спасибо: 939  
	
		
			
				Поблагодарили 2,534 раз(а) в 911 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            20.07.2013, 20:02
            
            
         | 
        
             
            #7
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Сержант  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 01.10.2011  
                
                
                
                 Сообщений: 128
                   
 Популярность: 5723  
                  
	 Сказал(а) спасибо: 25  
	
		
			
				Поблагодарили 174 раз(а) в 105 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
            
               
    
  
        
        
          
                
                
                  
                        
                          | 
                        
                        Цитата: | 
                        
                          | 
                   
                 
                 | 
                
                 | 
                
                
                
                 | 
                
                
                
                 | 
           
         
        
          
                | 
                 | 
                 | 
                
                 | 
           
          
                | 
                 | 
                
                Ожидание 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
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Фельдмаршал  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 22.02.2011  
                
                
                
                 Сообщений: 949
                   
 Популярность: 34698  
                  
	 Сказал(а) спасибо: 939  
	
		
			
				Поблагодарили 2,534 раз(а) в 911 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            21.07.2013, 20:02
            
            
         | 
        
             
            #9
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Лейтенант-командор  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 12.08.2010  
                
                
                
                 Сообщений: 727
                   
 Популярность: 30569  
 Золото Zhyk.Ru: 1     
                  
	 Сказал(а) спасибо: 57  
	
		
			
				Поблагодарили 645 раз(а) в 386 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                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пасибо:
				
				
				
			 | 
			 | 
		 
	 
  
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            21.07.2013, 20:29
            
            
         | 
        
             
            #10
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 20.12.2010  
                
                
                
                 Сообщений: 58
                   
 Популярность: 50  
                  
	 Сказал(а) спасибо: 22  
	
		
			
				Поблагодарили 36 раз(а) в 15 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
            
               
    
  
        
        
          
                
                
                  
                        
                          | 
                        
                        Цитата: | 
                        
                          | 
                   
                 
                 | 
                
                 | 
                
                
                
                 | 
                
                
                
                 | 
           
         
        
         | 
   
 
Я не знаю почему, но пост "Оба наркоманские, не на 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
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Старший сержант  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 25.12.2011  
                
                
                
                 Сообщений: 191
                   
 Популярность: 5259  
                  
	 Сказал(а) спасибо: 31  
	
		
			
				Поблагодарили 235 раз(а) в 135 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Как узнать скорость загрузки файла используя Indy.
             
             
            
        
        
        
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            21.07.2013, 21:06
            
            
         | 
        
             
            #12
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Сержант  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 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 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 16:21. 
		 
	 
 
 | 
  |