Если ваша программа содержит подключаемые модули (BPL или DLL) или есть
необходимость обновлять саму программу, то наверняка стояла проблема обновления
копий программы. С развитием Internet появилась прекрасная возможность сделать
это быстро и красиво. В данной статье мы расскажем, как добавить опцию
автообновления программ из Internet. Delphi дает нам полный доступ к API
WinInet (wininet.pas), что позволяет подключиться и скачать любой файл с
указанного вебсайта, используя протоколы FTP или HTTP. Например, мы можем
использовать функции API WinInet для создания FTP-браузера или программы для
поиска на публичных FTP-серверах заданных файлов. Основная функция нашей
программы - GetInetFile:
uses Wininet;
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 очень просто:
var FileOnNet, LocalFileName:
string begin FileOnNet:='http://src.fitkursk.ru/articles/mp3player.zip'; LocalFileName:='MyFile.zip';
if GetInetFile(FileOnNet,LocalFileName)=True
then ShowMessage('Download
successful') else ShowMessage('Error in file download')
end;
|
Этот кусок кода скачивает файл с именем mp3player.zip, находящийся по
адресу 'http://src.fitkursk.ru/articles/' и записывает его в текущий каталог под
именем 'MyFile.zip'. Все очень просто.
Литература по Borland Delphi
|