Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отловить ошибку при закачке с помощью WinInet, Помогите отловить ошибки разрыва соедин 
:(
    Опции темы
Desperate
Дата 9.1.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: -1
Всего: -1



Помогите! Я использую для закачки файла такую функцию
Код

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 2048;
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;



Часто случается что соединение разрывается, как мне это отловить и например вывести сообщение?
PM MAIL   Вверх
Matematik
Дата 9.1.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Надо обрабатывать значения которые  возвращают ф-и InternetOpenURL() и InternetReadFile()



Это сообщение отредактировал(а) Matematik - 9.1.2007, 23:13
PM MAIL WWW ICQ   Вверх
Desperate
Дата 9.1.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: -1
Всего: -1



Как? И какие они значения возвращают?
PM MAIL   Вверх
Snowy
Дата 9.1.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Примерно так:
Код

  if not InternetReadFile(hURL, @Buffer,SizeOf(Buffer), BufferLen) then 
  begin
    SetLength(sAppName, MAX_PATH);
    InternetReadFile(hURL, pointer(sAppName), MAX_PATH, BufferLength);
    MessageBox(0, PChar(sAppName), 'Error', MB_ICONERROR);
    Break;
  end;
Код не проверял.

Добавлено @ 23:19 
Цитата(Desperate @  9.1.2007,  23:13 Найти цитируемый пост)
И какие они значения возвращают?
true или false, в зависимости от того, получилось выполнить или нет smile
PM MAIL   Вверх
Matematik
Дата 9.1.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Цитата(Desperate @  9.1.2007,  23:13 Найти цитируемый пост)
Как? И какие они значения возвращают? 

MSDN и еще раз MSDN
Цитата

InternetReadFile
Return Values
Returns TRUE if successful, or FALSE otherwise. To get extended error information, call GetLastError. An application can also use InternetGetLastResponseInfo when necessary.

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.