![]() |
|
|
Регистрация | << Правила форума >> | 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; |