Показать сообщение отдельно

  #1460  
Старый 29.04.2008, 19:26
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами: 10139366

Репутация: 1502


По умолчанию

Цитата:
Сообщение от zl0y  
Стыдно просить(( но посоветуйте компонент для скачивания страницы,чтобы был timeout на подключение к серверу и выдавал размер файла в начале или в процессе получения
что-нть типа:
Код:
function DownloadFile(const Url: string): string;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1024] of char;
  BytesRead: cardinal;
begin
  Result := '';
  NetHandle := InternetOpen('Delphi 7.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

  if Assigned(NetHandle) then
    begin

    UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);

    if Assigned(UrlHandle) then
      { UrlHandle правильный? Начинаем загрузку } 
      begin 
      FillChar(Buffer, SizeOf(Buffer), 0); 
      repeat
        Result := Result + Buffer;
        FillChar(Buffer, SizeOf(Buffer), 0);
        InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
      until BytesRead = 0; 
      InternetCloseHandle(UrlHandle); 
      end 
    else 
      begin 
      { UrlHandle неправильный. Генерируем исключительную ситуацию. } 
      raise Exception.CreateFmt('Cannot open URL %s', [Url]); 
      end;

    InternetCloseHandle(NetHandle); 
    end 
  else 
    { NetHandle недопустимый. Генерируем исключительную ситуацию } 
    raise Exception.Create('Unable to initialize Wininet'); 
end;
В процессе размер в BytesRead..
Конечно, не совсем то, но всё же...

PS И не такое уж и гавно wininet А с сокетами работать надо ОсТоРоЖнО
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием