Тема: Updater
Показать сообщение отдельно
Старый 25.01.2012, 23:53   #10
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Код:
unit inntUtils;

interface

uses Wininet,Windows,sysutils,defineewa;

var
 WININETHANDLE : Pointer=nil;

type
 TInetLoadingCallback = function(progress : INT64):BOOL; stdcall;


function GetInetFile(const fileURL, FileName: string; ldc : TInetLoadingCallback): boolean;

implementation


function GetInetFile(const fileURL, FileName: string; ldc : TInetLoadingCallback): boolean;
const
  BufferSize = 1024;
var
  hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: file;
  sAppName: string;
  cmdl : array[0..511]of ansichar;
  posit : INT64;
  sz    : INT64;
  dwsz,dwreserved,ecode  : DWORD;
begin
  Result := False;
  GetModuleFileName(0,@cmdl,sizeof(cmdl));
  sAppName:=PAnsiChar(@cmdl);
  sAppName := ExtractFileName(sAppName);
  if WININETHANDLE=nil then WININETHANDLE:= InternetOpen(PChar(sAppName),
  INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if WININETHANDLE=nil then exit;
    hURL := InternetOpenURL(WININETHANDLE, PChar(fileURL), nil, 0, 0, 0);
    if hURL=nil then exit;  
    posit:=0;
    try
      AssignFile(f, FileName);
      Rewrite(f,1);
      repeat
        InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
        BlockWrite(f, Buffer, BufferLen);
        inc(posit,BufferLen);
        if assigned(ldc)then if not ldc(posit)then begin
          CloseFile(f);
          exit;
        end;
      until
        BufferLen = 0;
      CloseFile(f);
      Result := True;
    finally
      InternetCloseHandle(hURL);
    end;
end;

initialization

finalization
 InternetCloseHandle(WININETHANDLE);

end.
чуток подправил, впринципе нормально
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием