Название: Обработка исключительных ситуаций в языки С++ Отправлено: Магнетон Бора от Сентябрь 11, 2008, 04:00:42 В сфере недавних событий появилась одна маленькая, но весьма маленькая проблемка: в любой программе учебной, научной и т.п. могут возникать исключительные ситуации, которые необходимо обрабатывать. Такие ситуации в С++ обрабатываются с помощью генерации исключений, для этого используются операторы throw, catch и т.д. А теперь, уважаемые, знатоки, внимание вопрос: "Почему эти операторы никак не хотят работать в среде Borland C3.1? Операторы выделяются белым цветом, как положено, но при компиляции программы вылезают ошибки, связанные с использованием этих самых операторов."
:( ЗЫ: Просьба не предлагать сменить среду на другую, нужна именно эта. :) Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: EvilMax от Сентябрь 11, 2008, 04:01:46 Извини, друг, но ответ на твой вопрос "потому что надо сменить среду, так как в этой версии обработка исключений не реализована" :D
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Магнетон Бора от Сентябрь 11, 2008, 04:08:31 Извини, друг, но ответ на твой вопрос "потому что надо сменить среду, так как в этой версии обработка исключений не реализована" Нак какую среду ее поменять лучше всего? Моё задаие предполагает построение графиков, пользовательского интерфейса и т.п. В билдере, я так понимаю исключение работают, но там не получается использовать графические функции Borland C 3.1. Как же теперь быть? Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: naxellar от Сентябрь 11, 2008, 04:16:59 Магнетон Бора, а какой интерфейс и графики в прогой под DOS, и плюс на висте незапашет.
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: EvilMax от Сентябрь 11, 2008, 04:18:34 Извини, друг, но ответ на твой вопрос "потому что надо сменить среду, так как в этой версии обработка исключений не реализована" Нак какую среду ее поменять лучше всего? Моё задаие предполагает построение графиков, пользовательского интерфейса и т.п. В билдере, я так понимаю исключение работают, но там не получается использовать графические функции Borland C 3.1. Как же теперь быть? Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Магнетон Бора от Сентябрь 11, 2008, 04:23:55 Магнетон Бора, а какой интерфейс и графики в прогой под DOS, и плюс на висте незапашет. Виста меня интересуют сейчас меньше всего, а большего всего - курсовой проект, в котором пользовательский интерфейс и графики функций необходимо реализовывать вручную. (Отправлено в: Сентябрь 11, 2008, 04:21:50 ) Если нужна BGI-графика, то единственный выход - не обрабатывать исключения. Т.е. просто вместе генерации исключений ставить кучу проверок и тем самым портить полезный код ? Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: artri от Сентябрь 11, 2008, 04:30:04 Когда-то такая проблема стояла применительно к Borland Pascal 7.0. Решение было найдено в одной из книг Фаронова. Точно уже не помню, но где-то так: т.к. адрес текущей инструкции сохраняется в паре регистров ЦП CS:IP, предлагалось где-то сохранять значение этих регистров, после чего переопределялась стандартная функция паскаля, вызываемая при возникновении исключения, в которой для регистров CS:IP устанавливалось сохраненное значение. Этот подход был когда-то использован в курсовой работе по программированию. Оно даже работало :-D
Думаю, что реализовать нечто похожее можно и в Borland C3.1. Если интересно, могу выложить модуль на паскале с примерами использования :) Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: EvilMax от Сентябрь 11, 2008, 04:31:24 Увы. Или забить на графику BGI и пользоваться примитивными функциями рисования WinAPI (рисовать линии, выводить шрифт, делать заливку). BGI была дана чтобы освоить принципы. Если освоил, то разберешься и с рисованием примитивов в других библиотеках.
artri, только чтобы это заработало минимум в хрюнделе и он смог защитить при сдаче ;) ИМХО, рано ему до подходов с модификацией Instruction Pointer. Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Alder от Сентябрь 11, 2008, 04:34:22 artri, кстати да. Я тоже так делал в свое время :) Ничего там сложного нету. Выложи им примерчик.
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: artri от Сентябрь 11, 2008, 04:37:53 artri, только чтобы это заработало минимум в хрюнделе и он смог защитить при сдаче ;) ИМХО, рано ему до подходов с модификацией Instruction Pointer. EvilMax, ИМХО, если сильно нужно именно там, где инструментария нормального нет, то можно и Instruction Pointer модифицировать. Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Магнетон Бора от Сентябрь 11, 2008, 04:41:52 EvilMax, спасибо за совет, буду юзать карсовой без генерации исключений. :-)
(Отправлено в: Сентябрь 11, 2008, 04:39:59 ) artri, чисто ради спортивного интереса покажи этот примерчик, и объясни по-подробнее ))) Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Артем от Сентябрь 11, 2008, 04:42:22 artri, если не сложно выложи пожалуйста примерчик. ИУС-07, и я в том числе, будем тебе благодарны :)
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: artri от Сентябрь 11, 2008, 05:10:49 Модуль диагностики:
Код: Unit diagnost; Пример использования: Код: Program main; Где-то так, кстати, для Borland C 3.1 возможно надо будет инлайн коды переписать, т.к. насколько я помню там как-то хитро состояние регистров из стека извлекается Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Alder от Сентябрь 11, 2008, 05:21:26 artri, слегка подправил пост - русские сообщения видны теперь. Да, я тоже так делал :) По-моему достаточно простой для понимания способ.
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: artri от Сентябрь 11, 2008, 05:26:02 artri, слегка подправил пост - русские сообщения видны теперь. Да, я тоже так делал :) По-моему достаточно простой для понимания способ. Ага, особенно inline инструкции :D Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Артем от Сентябрь 11, 2008, 05:52:02 artri, спс за код, буду разбирать.
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: zer_owlet от Сентябрь 11, 2008, 10:22:55 кстати, по поводу "рано" -- Мокрый это давал на 1-м курсе..... и в паскале его пример работал на ура... знаю, потому что делал на 5-м курсе курсовой для какого-то 1-курсника и там надо было ))
Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: EvilMax от Сентябрь 11, 2008, 11:18:35 кстати, по поводу "рано" -- Мокрый это давал на 1-м курсе..... и в паскале его пример работал на ура... знаю, потому что делал на 5-м курсе курсовой для какого-то 1-курсника и там надо было )) Хм. Наверное, я перваков недогружаю :D Сделаю выводы. Поставим цель, чтобы "средний студент" не только там дизайнил ОО-софт, но и мог наваять по-шурику обработку исключительных ситуаций с инлайн-кодом ;)Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: FazU от Сентябрь 11, 2008, 11:29:45 я перваков недогружаю Смеющийся все перваки идите в деканат! вам пора.... :DНазвание: Re: Обработка исключительных ситуаций в языки С++ Отправлено: zer_owlet от Сентябрь 12, 2008, 04:24:36 кстати, по поводу "рано" -- Мокрый это давал на 1-м курсе..... и в паскале его пример работал на ура... знаю, потому что делал на 5-м курсе курсовой для какого-то 1-курсника и там надо было )) Хм. Наверное, я перваков недогружаю :D Сделаю выводы. Поставим цель, чтобы "средний студент" не только там дизайнил ОО-софт, но и мог наваять по-шурику обработку исключительных ситуаций с инлайн-кодом ;)помню как разговаривал с некоторыми преподавателями на тему обработки прерываний -- дык для них пример Мокрого тоже был новостью )) однако, пример работал отлично :) Название: Re: Обработка исключительных ситуаций в языки С++ Отправлено: Магнетон Бора от Сентябрь 13, 2008, 09:04:48 Жаль, конечно, что это пример реализован на Паскале, но все-равно не понятно некоторые вещи... И не думаю, ИМХО что стоит сейчас мучится с юзаньем инлайн функций, уж лучше плотнее подойти к глубокому изучению метода решения поставленной задачи. :-)
|