|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.11.2020, 00:23 | #1 |
Новичок
Джуниор
Регистрация: 11.10.2020
Сообщений: 1
|
Скачивание файла в потоке через синапс
Добрый день, как можно скачать файл в отдельном потоке через синапс?
function GetSize1(const AURL : string): int64; var HTTPClient1: THTTPSend; I: Integer; s: string; begin Result:=-1; HTTPClient1:=THTTPSend.Create; try if HTTPClient1.HTTPMethod('HEAD',AURL) then begin for I := 0 to HTTPClient1.Headers.Count-1 do begin if pos('content-length',lowercase(HTTPClient1.Heade rs[i]))>0 then begin s:= copy(HTTPClient1.Headers[i], 16, Length(HTTPClient1.Headers[i] )-15); Result:=StrToInt(s)+Length(HTTPClie nt1.Headers.Text); break; end; end; end; finally HTTPClient1.Free end; end; procedure TForm1.OnSockStatus1(Sender: TObject; Reason: THookSocketReason; const Value: String); const cProgress = '%d/%d MB'; begin if Reason=HR_ReadCount then begin downloaded1:=downloaded1+StrToInt(V alue); if size1>0 then begin Gauge1.Progress:=round(downloaded1/1024/1024); Label1.Caption:=Format(cProgress,[round(downloaded1/1024/1024),Gauge1.MaxValue]); end else Label1.Caption:=IntToStr(round(down loaded1/1024/1024))+' MB'; Application.ProcessMessages; end; end; procedure TForm1.Button1Click(Sender: TObject); var HTTPClient1: THTTPSend; begin Timer4.Enabled:= true; Timer1.Enabled:= false; downloaded1:=0; size1:=GetSize1('http://www.ferma.name/internet.txt');//получаем размер файла для загрузки {определяем стиль у Gauge} if size1>0 then begin Gauge1.MaxValue:= round(size1/1024/1024); end; HTTPClient1:=THTTPSend.Create; try //определяем обработчик события OnStatus HTTPClient1.Sock.OnStatus:=OnSockSt atus1; {Пробуем скачать файл} if HTTPClient1.HTTPMethod('GET','http://www.ferma.name/internet.txt') then HTTPClient1.Document.SaveToFile('in ternet.txt'); finally HTTPClient1.Free; end; end; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
скачивание файла через cmd | Артэс | Windows | 5 | 24.11.2016 12:39 |
Скачивание большого файла через Synapse без сохранения | CraZZZy-GameRRR | Помощь студентам | 0 | 13.11.2016 02:41 |
Скачивание файла из интернета, не зная пути и имени файла. | Скрипт | Microsoft Office Excel | 0 | 14.09.2013 22:14 |
Скачивание файла в Dev C++ | Nullerset | Общие вопросы C/C++ | 1 | 09.08.2013 21:46 |
Скачивание файлов в цикле через поток | Shouldercannon | Общие вопросы Delphi | 3 | 05.05.2012 23:01 |