Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 21.01.2013, 15:46   #1
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Обработка ошибок в MP2.0.2

Всем известно, что в случае runtime-ошибки в коде (например, неверное имя файла) MP наглухо зависает, не указывая, какая ошибка произошла.
Похоже, я нашел костыльное, но рабочее решение.

Вероятно, в новых версиях данную багу (или фичу?) уже пофиксили, но...
Лично мне больше нравится 2.0.2.
Так что, данная заметка для тех, кто все еще пользуется старой версией.

Разработчики поступили следующим образом:
Каждая процедура или функция (в том числе код главного модуля) выдает exception, который перебрасывается далее, в метод M.run(). Этот метод не перебрасывает исключение далее, а обрабатывает его. Точнее, он его "ловит", но никак не обрабатывает.

Идея состоит в том, чтобы заменить код обработки исключения на свой, и в случае какой-либо ошибки выводить сообщение с информацией об ошибке. Проблема в том, что основной код находится в том же классе, что и метод run(). Поэтому, я придумал следующий костыль.

Добавляем в проект модуль mainunit, в нем процедуру main (примерно, как в Си). Теперь весь код, который мы писали бы в файле проекта, будем писать в этом модуле. процедура main будет заменять главный блок begin...end. В главном модуле не пишем ничего. Теперь можно спокойно заменить класс M.class на "пропатченный" (например, с помощью MPExt).

Описание немного сумбурное, но пока непонятно, будет ли это кому-то интересно. Если будет интересно, буду ковырять дальше (в планах разработка мастера создания проектов под такую концепцию и раскуривание других возможных профитов от патча M.class).

На данный момент сообщения об ошибках выводятся через стандартный Alert. Прилагаю тестовый файл M.class и проект.

Главный вопрос: это кому-нибудь интересно (или все уже перешли на новые версии)?
Вложения
Тип файла: zip exc_jndl_test1.zip (5.6 Кб, 873 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
nil0q (23.01.2013)
Старый 23.01.2013, 19:27   #2
nil0q
ПроЭктировщик
 
Аватар для nil0q
 
Регистрация: 30.06.2009
Адрес: Челябинская обл.
Сообщений: 111
Написано 32 полезных сообщений
(для 99 пользователей)
Ответ: Обработка ошибок в MP2.0.2

Сообщение от ViNT Посмотреть сообщение
для тех, кто все еще пользуется старой версией
Кто-то всё ещё пользуется мидлетпаскалем?


В 3.5 предрелизе подобного не замечено, но там и свои недоработки есть.
__________________
Аинéжарбази овокáсьф имятнэ́меле как, имякщтóт и имяини́ль оклёт ими́ньдо сяюзлёп, ильсы́м эынэвьтспóс ышáн мóнян тягалзи, эы́жущт тят-ищт сант-ищтý анакаккáт; áкызэй овóваримь авотэ́ як итя́ммарг тыжýлс аирьтэмяег аянлетя́трэщтанот, мадóраи мынавóзарбо мэ́сьф мынтáняп авокáныдя, икиньхэ́ть мóкызэй астэя́львэй шóтрэщт ильсэ́й.
Щамóпф раткáдэрь оидюá!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com