Загрузка файла из интернета с отображением прогресса в progressbar

Вопрос такой, возможно ли доработать выше представленный код так, чтобы была возможность выводить на форму объем загружаемого файла и уже загруженный объём ?

Сам разобрался

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;
Теги:
Загрузка файла, progressbar
Добавлено: 18 Июня 2015 21:11:07 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...