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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2009, 09:09   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
Смущение Разобраться с исключениями...

Я написал уже порядочно кода и переделывать уже смысла нет. В общем я хочу, чтобы вывод в экземпляре класса (состоящей из большего числа процедур и функций) выполняла другая, не входящая в данный класс, функция. Можно ли это реализовать посредством исключений по следующей схеме? Метод класса генерирует исключение, а обертка try-except-end обрабатывает его и дальнейшее выполнение возвращалось к месту следующем за исключением.
Например:
try
a.Run;
except
on Исключение do MessageBox(a.Mess);
end;


Использование ввода-вывода в а, в данном случае категорически запрещено!
То есть, экземпляр моего класса выполняется до определенного момента затем готовит строку Меss и генерирует исключение. Блок try его обрабатывает и возвращает управление a. Такое вообще возможно? И если нет, то существуют ли другие способы решения данной проблемы?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.02.2009, 10:23   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
... Метод класса генерирует исключение, а обертка try-except-end обрабатывает его и дальнейшее выполнение возвращалось к месту следующем за исключением...
Теоретически (потому как сам не пробовал) возврат флага EXCEPTION_CONTINUE_EXECUTION вернет нас к инструкции, которая вызвала исключение. Но, думаю, в Delphi не все так просто. К тому же:

Цитата:
То есть, экземпляр моего класса выполняется до определенного момента затем готовит строку Меss и генерирует исключение.
почему бы вместо генерации исключения не вызвать сразу MessageBox().
Или виртуальный метод класса, который можно будет в дальнейшем перекрыть и использовать любой вывод (на консоль или диалоговое окно).

Еще вариант: сохранять все подготовленные строки в TStringList и показывать его после обработки.
alexBlack вне форума Ответить с цитированием
Старый 10.02.2009, 11:00   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
не входящая в данный класс, функция
О какой функе речь идет? О тобой написанной или какая то стандартная типа ShowMessage?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2009, 16:44   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Смысл в том, чтобы использовать класс и в Линуксе и в Досе и в Винде. Проблемы по вводу-выводу должна брать на себя внешняя оболочка.
Даже если просто использовать только Винодовс, все равно необходимо учитывать интересы других программистов. Ну например, он (стороннинй разработчик) будет использовать в своей программе оригинальные компоненты (сейчас это модно), а тут на тебе стандартный Бокс вылезет. Не по фень-шую получится.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.02.2009, 16:48   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Хранить данные, а потом выводить тоже не спортивно, а вводить данные с клавиатуры как? Да и вообще не обязательно с клавиатуры. Внешняя программа может получать данные откуда ей надо, а отдавать моему классу. Также и сообщениями. Класс свое дело выполнил, а программа сама пусть разбирается че ей с этим делать.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.02.2009, 17:08   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

И прервать выполнение я тоже не могу... Потому как вручную вернуться практически невозможно (ИМХО).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться Toxass Общие вопросы Delphi 2 18.12.2008 16:57
помогите разобраться vigor53 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 16.12.2008 07:00
Помогите разобраться! Holodok Помощь студентам 12 02.05.2008 18:13
помогите разобраться ара Помощь студентам 13 05.12.2007 17:50
помогите разобраться zetrix Microsoft Office Excel 0 30.10.2006 19:16