![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Существует такая ситуация:
У меня есть программа, она автоматически обновляется через интернет. Обновление происходить с помощью другого EXE файла. то есть главная закрывается и открывается апдейтер, который удаляет страрую версию основной программы и скачивает новую. Загрузка происходит с помощью: Код:
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;Код:
var FileOnNet, LocalFileName: string;
verin:tinifile;
begin
FileOnNet:='...';
LocalFileName:='project2.exe';
application.ProcessMessages;
if GetInetFile(FileOnNet,LocalFileName)=True then
begin
ShowMessage('Обновление завершено!');
verin:=tinifile.Create('VerIn.ini');
verin.WriteString('Ver','Ver', edit1.Text);
end
else
ShowMessage('Ошибка! Проверьте ваши настройки интернета. При необходимости обратитесь в тех службу.'); Код:
function GetFileSize(FileName: String): Integer;
var
FS: TFileStream;
begin
try
FS := TFileStream.Create(Filename, fmOpenRead);
except
Result := -1;
end;
if Result <> -1 then Result := FS.Size;
FS.Free;
end;Код:
HTTP := TIdHTTP.Create(nil);
HTTP.Head('http://promous.ru/Project2.exe');
Razmer := HTTP.Response.ContentLength; //размер файла
HTTP.Free;
Razmer := Round (Razmer / 1024);
Edit3.text:=IntToStr (Razmer) + ' KB'; |
|
#2
|
|||
|
|||
|
Напиши так:
Код:
... Edit3.text:=IntToStr (Razmer) + ' KB'; Application.ProcessMessages; |