Качаємо файл з internet (delphi)

Качаємо файл з Internet (Delphi).

Якщо ваша програма містить модулі (BPL або DLL) або є необхідність оновлювати саму програму, то напевно стояла проблема поновлення копій програми. З розвитком Internet з'явилася прекрасна можливість зробити це швидко і красиво. У даній статті ми розповімо, як додати опцію автооновлення програм з Internet.
Delphi дає нам повний доступ до API WinInet (wininet.pas), що дозволяє підключитися і завантажити будь-який файл з зазначеного веб, використовуючи протоколи FTP або HTTP. Наприклад, ми можемо використовувати функції API WinInet для створення FTP-браузера або програми для пошуку на публічних FTP-серверах заданих файлів.
Основна функція нашої програми - GetInetFile:

function GetInetFile (const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var hSession, hURL: HInternet;
Buffer: array [1..BufferSize] 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)
until BufferLen = 0;
CloseFile (f);
Result: = True;
finally
InternetCloseHandle (hURL)
end
finally
InternetCloseHandle (hSession)
end
end;

Зауваження: звичайно, цей приклад потрібно розширити, вставивши, наприклад, код для відображення прогресу скачування в цикл.
Використовувати функцію GetInetFile дуже просто:

if GetInetFile (FileOnNet, LocalFileName) = True then
ShowMessage ( 'Download successful')
else
ShowMessage ( 'Error in file download')