• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Загрузка Файла Из Интернета С Отображением Прогресса В Progressbar

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,562
Баллы
155
Вопрос такой, возможно ли доработать выше представленный код так, чтобы была возможность выводить на форму объем загружаемого файла и уже загруженный объём ?

Код:
uses

IdHTTP, WinInet;
function GetInetFile(const fileURL, FileName: String): boolean;

var

hSession, hURL: HInternet;

Buffer: array[1..1024] of Byte;

BufferLen: DWORD;

f: File;

sAppName: String;

begin

Result:=false;

sAppName:=ExtractFileName(Application.ExeName);

hSession:=InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);

try

hURL:=InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);

try

AssignFile(f,FileName);

ReWrite(f,1);

repeat

InternetReadFile(hURL,@Buffer,SizeOf(Buffer),BufferLen);

BlockWrite(f,Buffer,BufferLen);

Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+BufferLen;

Application.ProcessMessages;

until

BufferLen = 0;

CloseFile(f);

Result:=True;

finally

InternetCloseHandle(hURL);

end;

finally

InternetCloseHandle(hSession);

end;

end;
function GetInetFileSize(const FileUrl:string): integer;

var

idHTTP: TidHTTP;

begin

Result:=0;

idHTTP:=TIdHTTP.Create(nil);

idHTTP.Head(FileUrl);

Result:=idHTTP.Response.ContentLength;

IdHTTP.Free;

end;
procedure TForm1.Button1Click(Sender: TObject);

begin

ProgressBar1.Max:=GetInetFileSize(Source);

GetInetFile(Source,Destination);

end;
 
Вверх Снизу