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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2020, 00:23   #1
artem0108
Новичок
Джуниор
 
Регистрация: 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;
artem0108 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скачивание файла через 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