C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Перехват сообщения об ошибке.
Евгений
  Отправлено: 06.01.2006, 22:03


Не зарегистрирован







Помогите, пожайлуста....
Пишу прогу, используя компоненты ServerSoket и ClientSocket.
Если сервер не поднят, то при подключению к нему выдается ошибка "Asynchronous socket error 10061". Как сделать, что бы перехватить эту ошибку и выдать свой Message.
GoodWin
Отправлено: 09.01.2006, 17:22


Дежурный стрелочник

Группа: Участник
Сообщений: 50



В событие OnError обработай ошибку по ErrorEvent или ErrorCode и
сделай ErrorCode равной нулю
Евгений
Отправлено: 09.01.2006, 18:00


Не зарегистрирован







Спасибо, попробую...
Lizard
Отправлено: 09.01.2006, 22:45


Ученик-кочегар

Группа: Участник
Сообщений: 20



Была точно такая же проблема, стандартные события мне не помогли.

Напиши следующую функцию в *.cpp файле формы:
CODE

void __fastcall TMainForm::MyException( TObject *Sender, Exception *E )
{
 if( String( E->ClassName() ) == "ESocketError" )
   {
    ShowMessage("Ошибка — ESocketError");
   }
}


В *.h файле формы в секции private добавь объявление этой функции:
CODE

void __fastcall MyException( TObject *Sender, Exception *E );


В событии FormCreate добавь:
CODE

void __fastcall TMainForm::FormCreate(TObject *Sender)
{
Application->OnException = MyException;
}


При возникновении исключительной ситуации (когда работа идет из билдера) появляться 2 диалоговых окна: стандартное сообщение билдера и сообщение "Ошибка — ESocketError". Когда же просто запустишь *.exe будет только наше сообщение "Ошибка — ESocketError" и не каких других диалоговых окон, т.е. при дисконнекте клиента или сервера не будет ни каких ошибок!
__Cheat3r
Отправлено: 10.01.2006, 02:09


Станционный диспетчер

Группа: Участник
Сообщений: 110



Фигня это всё .
Балуйся с ClientType и ServerType

З,Ы Эти копоненты — ацтой.

Вернуться в Вопросы программирования в C++Builder