Показать сообщение отдельно
  #6  
Старый 16.11.2008, 22:30
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

ну хорошо, 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;


Код:
var
  FileOnNet, LocalFileName: string;
begin
  FileOnNet := Edit1.Text;
  LocalFileName := Edit2.Text;

  if GetInetFile(FileOnNet, LocalFileName) = True then
    ShowMessage('Загрузка завершена')
  else
    ShowMessage('Ошибка при закачке файла');
end;

и ставим прогрессбар на панель:

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with ProgressBar1 do
  begin
    Parent := StatusBar1;
    Position := 0;
    Top := 2;
    Left := 0;
    Height := StatusBar1.Height - Top;
    Width := StatusBar1.Panels[0].Width - Left;
  end;
end;

осталось только отловить оставшееся время закачки
Ответить с цитированием