Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 15:28   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от beemoto Посмотреть сообщение
Сообственно есть таковой?
у меня в программе появляется ощибка которую надо непоказывать.
использовать try-except невыгодно, так как программа зависает на 3 секунды...
А что за ошибка? Может проще создать такие условия, при которых ошибка невозможна в принципе?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.12.2009, 16:00   #12
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

mihaly4, непомогает =(
мне надо загрузить рисунок с сайта, но если его нет то появляется ошибка
favicon:=TMemoryStream.Create;
idhttp1.Get(str1,favicon);
favicon.SaveToFile('1' + '.ico');
favicon.Free;
image9.Picture.LoadFromFile('1' + '.ico');
так загружаю, str1 - переменая стринг в ней находиться ссылка на адрес.
изображения на айте может и небыть
beemoto вне форума Ответить с цитированием
Старый 14.12.2009, 16:05   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Значит надо у кого-нибудь удостовериться в существовании такого файла.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.12.2009, 16:14   #14
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

решили под давлением общественности выложить... а со второго поста проигнорировали...
как вариант можете проверять размер того, что будете качать, если 0, значит не стоит:
Код:
procedure TForm.IdHTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
 if AWorkCountMax=0 then СБРАСЫВАЙТЕ ЗАКАЧКУ
а ошибка у вас возникает возможно при LoadFromFile, перед ним поставьте флаг сий проверки.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 14.12.2009 в 16:19.
raxp вне форума Ответить с цитированием
Старый 16.12.2009, 12:43   #15
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

raxp, Точно!
ощибка происходит при LoadFromFile
т.е. если фавиконки нету на сервере то сервер показывает страницу ощибки и дельфи сохраняет исходный код страницы ощибки как 1.ico, а когда программа загружает ее то естественно происходит ошибка.
может у когото есть идеи, как это исправить?
beemoto вне форума Ответить с цитированием
Старый 16.12.2009, 12:48   #16
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

в данном случае достаточно проверить сигнатуру "иконки" или парсить файл, а лучше сам поток MemoryStream на наличие тегов "html или других" (например через pos()), если не иконка, НЕ ЗАГРУЖАТЬ...
Код:
// Сигнатура ICO $00 $00 $01 $00
...
var name:array [0..255] of Char;
    fDAT: TMemoryStream;
begin
 fDAT:= TMemoryStream.Create;
 fDAT.LoadFromFile('favicon.ico');
 fDat.Position:= 0;
 fDAT.Read(name, SIZEOF(name));

 if (ord(name[0])=$00) and (ord(name[1])=$00) and (ord(name[2])=$01)and (ord(name[3])=$00)
 then messagebox(0,'сие - иконка!','',0)
end;
в вашем случае...
Код:
var flag: boolean;
     name:array [0..255] of Char;
begin
 favicon:= TMemoryStream.Create;
 idhttp1.Get(str1,favicon);
 favicon.SaveToFile('1' + '.ico');
 //
 favicon.Position:= 0; // или seek(favicon, sofrombegining);
 favicon.Read(name, SIZEOF(name));

 if (ord(name[0])=$00) and (ord(name[1])=$00) and (ord(name[2])=$01)and (ord(name[3])=$00)
  then flag:= true;

 //или вообще без флага, но это оставил для наглядности
 favicon.Free;
 if (flag) then image9.Picture.LoadFromFile('1' + '.ico');
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 16.12.2009 в 13:32.
raxp вне форума Ответить с цитированием
Старый 16.12.2009, 18:33   #17
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

beemoto, поищи в инете пример оработки ошибок, можно просто сделать так что ошибки не будут вылазить, но это не значит что они будут обрабатываться, поэтому прога может подвиснуть или того хуже подвесить систему
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог ACTool Lime Софт 14 11.07.2009 10:23
аналог stringgrid unit-85 Компоненты Delphi 4 05.03.2009 14:00
Аналог Sleep() Ants Общие вопросы Delphi 2 18.11.2008 13:11
Аналог with на С++. Иллидан Общие вопросы C/C++ 1 16.05.2008 21:41