Показать сообщение отдельно
  #4  
Старый 24.06.2014, 01:57
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Дело было так
Цитата:
Сообщение от Drkb 03587
...Так вот, чтобы написать эту прогу, мне пришлось основательно помучаться: я не знал, ни как закачать файлы по фтп, ни как закачать его по хттп. Но если с фтп, перерыв борландовский хелп и примеры, я разобрался, то хттп постоянно глючил, выдавал битый файл. Я написал в десяток ньюсгрупп - как русских, так и забугорных, задавал вопросы на бордах крутых дельфовских сайтов, я писал программерам... И что ты думаешь, кто-нибудь посоветовал что-нибудь путевое? Фиг!

Я дошел сам. А дело было в мелочи: я делал все правильно, но писал

nmhttp.get('http://www.host.com/file.zip') ;

А нужно было

nmhttp.get('www.host.com/file.zip') ;...
от-туда же 03577, возможно тоже не рабочий
Код:
function DownloadFile(const Url: string): string;
var
NetHandle, UrlHandle: HINTERNET;
Buffer: array[0..1024] of char;
BytesRead: cardinal;
begin
Result := '';
NetHandle := InternetOpen('Delphi 5.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;
Ответить с цитированием