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

  • Автор темы Автор темы Sascha
  • Дата начала Дата начала

Sascha

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

Код:
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;
 
Назад
Сверху Снизу