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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачка файлов... + except 
:(
    Опции темы
In0stRAnez
  Дата 22.10.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Собственно вот функция которая даёт возможность скачать файл из интернета, проблема в том что я не знаю как правильно вставить сюда обработчик ошибок... дело в том что вылетает ошибочка и убивается приложение если я пытаюсь скачать файлик с инета а сетевые подключения отключены...
Код
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
try
  Result:=False;
  sAppName := ExtractFileName(Application.ExeName);
  hSession := InternetOpen(PChar(sAppName),
  INTERNET_OPEN_TYPE_PRECONFIG,
  nil, nil, 0);
  hURL := InternetOpenURL(hSession,
  PChar(fileURL),
  nil,0,0,0);
    try
     AssignFile(f, FileName);
     Rewrite(f,1);
       repeat
         InternetReadFile(hURL, @Buffer,
         SizeOf(Buffer), BufferLen);
[COLOR="Red"]         BlockWrite(f, Buffer, BufferLen)[/COLOR]
       until BufferLen = 0;
             CloseFile(f);
             Result:=True;

      finally
             InternetCloseHandle(hURL)
      end
      finally
             InternetCloseHandle(hSession)
end;
end;

function GetWindowsFolder:string;
var p:PChar;
begin
GetMem(p, MAX_PATH);
result:='';
if GetWindowsDirectory(p, MAX_PATH)>0 then   result:=string(p);
FreeMem(p);
end;

PM MAIL   Вверх
Hexel
Дата 26.10.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Мой Delphi6 к сожалению не знает, что такое HInternet, но интуиция подсказывает, что при создании подключения
Код

  hSession := InternetOpen(PChar(sAppName),
  INTERNET_OPEN_TYPE_PRECONFIG,
  nil, nil, 0);

эта hSession должна содержать некое значение, отличное от nil. а так, наверное, и происходит, когда нет никаких подключений, даже локальных. вот такую проверку и поставь
Код

   if hSession = nil then
     // тут обрабатывать ошибку

пробуй, если что - пишы

Это сообщение отредактировал(а) Hexel - 26.10.2009, 02:05
PM MAIL   Вверх
Beltar
Дата 26.10.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 0
Всего: 7



1) InternetReadFile как минимум может сообщить об успехе.

Цитата

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


2) 2 Hexel:

Вообще-то префикс h уже говорит, что это дескриптор, а нулевые дескрипторы в Delphi равны 0, а не nil.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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