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

 
Исключения Билдера на русском, Текст исключения на US нужен на RUS
Dag
Отправлено: 03.05.2004, 18:10


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

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



А проблема такая: у меня есть текст исключения (E->Message.c_str()). Мне нужно, чтобы вместо него выдавалось русский текст об ошибке. Как это сделать? Текст исключения на US: DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_Schet_Deliver'. The conflict occurred in database 'CD', table 'Schet', column 'Inn_post'. Само исключение я отловил и с чем оно связано знаю.

Пытался делать так:
CODE
if (E->Message.c_str() == "DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_Schet_Deliver'. The conflict occurred in database 'CD', table 'Schet', column 'Inn_post'") {ShowMessage("Русское сообщение")}



но ничего не вышло. Как надо сделать правильно?

Отредактировано Dag — 03/05/2004, 19:13
Doga
Отправлено: 03.05.2004, 19:13


Мастер участка

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



Может обрабатывать не текст исключения, а его тип? Т.е. по имени класса исключения...
Dag
Отправлено: 03.05.2004, 20:05


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

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



Это как?
xTrim
Отправлено: 06.05.2004, 17:28


Машинист паровоза

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



CODE

try
{
 Table1->First();
}
catch(EDatabaseError &e)
{
 ShowMessage("Таблица-то закрыта!");
}
olegenty
Отправлено: 07.05.2004, 07:05


Ветеран

Группа: Модератор
Сообщений: 2412



не, там не так, там надо отлавливать РЕАЛЬНЫЙ класс ошибки и работать с ним:

if (EIBError = dynamic_cast(e))
{
}

потому что классы реальных ошибок, как правило, порождены от Exception. но в них больше инфы...

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