Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет для Delphi-программиста" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2005 → | ||||||
1
|
2
|
|||||
---|---|---|---|---|---|---|
3
|
4
|
5
|
6
|
8
|
9
|
|
10
|
11
|
12
|
14
|
15
|
16
|
|
17
|
18
|
20
|
21
|
22
|
23
|
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
Статистика
-4 за неделю
Рассылка сайта Delphi coding 'Рассылка сайта Delphi coding'
Информационный Канал Subscribe.Ru |
Рассылка сайта Delphi CodingВыпуск от 19 Октября 2005 года. Noil.pri.eeПриглашаються авторы статей для сотрудничества с сайтом. Подробности о том как добавить свою статью на сервер читайте здесь
На сайте Delphi Coding собрано большое количество статей, книг и различной компьютерной документации. В рассылке вы сможете увидеть последнии поступления на сайте, а также более подробно ознакомиться с некоторыми материалами.
Желаем Вам приятного чтения. Архивы статей по различным тематикам Delphi
Коллекции статей
Последнии файлыGet Symbols Table v.1.0 в категории Система Приложение позволяет показать шрифты Windows в различных таблицах шрифтов Desktop Sprite Demo v.1.51 в категории Система Пример показывает, как создать анимированного эльфа на рабочем столе компьютера, использую прямой метод рисования на холсте рабочего стола. Desktop Icons Positon v.1 в категории Система Небольшая программа (исходный код включён) для установки/перемещения иконок на рабочем
столе. Только для Windows XP DLL Inject v.1.01 в категории Система Пример показывает как вставить свою DLL в какой-либо процесс, используя VirtualAllocEx и CreateRemoteThread. Создание интерактивных Сервисов для Windows NT в категории Система Создание интерактивных Сервисов для Windows NT Restorator2005 в категории Программы Это самая популярная программа для редактирования программ. Поддерживает большое количество файлов - от scr (скринсейвер) до dll библиотек. Возможность создания патчей
для применения Ваших изменений без использования ресторатора. Редактирует почти все внутренние ресурсы. Редактирование ресурсов идет в специальном окне. Ресурсы отображаются стандартно, как текстовые файлы. Встроенная система поиска ресурсов. На сайте производителя есть русская версия программы. Недостатки тоже есть - в окне не редактируются файлы больше 64 kb из за использования memo-edit.
Функция редактирования, замены и создания патчей доступна только после регистрации (67$). Есть скидки студентам. За добавление этого файла благодарим пользователя Gensun Ссылка на обсуждение на форуме Control Panel Demo v.1.0.0 в категории Система Документированный демо проект, который показывает как создавать
свои собственные аплеты для Windows Control Panel. Port95 v.1.00 в категории Hardware Delphi модуль и пример для доступа к портам ввода/вывода. Выполнен в традиционном для Pascal стиле. Только для Win9X. K-Keyboard v.1.0 в категории Hardware Используя, этот пример Вы сможете изменить значение любой клавиши, или связать её с определенным приложением/словом, или заблокировать клавишу. CPUSpeed v.1.00 в категории Hardware CPUSpeed измеряет скорость центрального процессора. Работает только с процессорами Pentium или более новыми. СтатьяАвтоматическая обработка ошибокВведение Эта статья, в первую очередь, будет интересна начинающим программистам. Я расскажу об одном из методов обработки исключительных ситуаций, не очень распространенном, но довольно эффективном. У всех Типичная обработка ошибки заключается в том, чтобы обрамить блоки кода в конструкции try..except или try..finally. В общем, все по учебнику. Тем не менее, многие попросту не делают этого, так как им недосуг или обработка исключений оставляется "на потом". Когда подходит время сдачи проекта, нередко такие программисты начинают спешно латать дыры, что может дать не только положительный эффект, я имею ввиду появившуюся у программы обработку исключений, но и отрицательный. Дело в том, что обработка исключительных ситуаций тоже является частью кода, а внесение нового кода может повлечь за собой и внесение новых ошибок. Избавиться от сложившейся ситуации не так трудно, как может показаться на первый взгляд. Почти все становится ясно, когда вспоминаешь про объект Application и его свойство OnException. Не у всех Как вы уже, наверное, догадались, свойство Application.OnException является глобальным обработчиком событий приложения. Перед тем как описать метод использования этого свойства, давайте договоримся, что у нас есть объект класса TgsCatcher (именно его я и описываю в данной статье), у которого есть метод TgsCatcer.Catcher, который и будет обработчиком ошибок приложения. Простейший вариант вышесказанного выглядит следующим образом:
Это компонент, который умеет подключаться и отключаться от обработчика Application.OnException при помощи установки свойства Enabled. В подключенном состоянии все возникшие в приложении исключительные ситуации перенаправляются методу TgsCatcher.Catcher, который с этими исключениями, пока, ничего не делает. Теперь давайте пофантазируем, что бы мы хотели видеть в глобальном автоматическом обработчике ошибок. Мне, к примеру, очень пригодился бы скриншот (снимок экрана) активного окна, который автоматически бы был записан в файл под уникальным именем. Также мне бы хотелось иметь описание текущего окружения системы и описание проблемы. Реализация функций Для начала, давайте снимем скриншот активного окна. Сделать это довольно легко. В секцию implementation подключаем модуль Graphics. Лирическое отступление: Считается неплохим стилем, подключать модули в секцию implementation, если их информация требуется только в этой секции. Например, в секции interface я нигде не использовал ни одного класса или типа, который описан в модуле Graphics, поэтому и занес его в implementation. После подключения вышеназванного модуля мы получили возможность работы с изображениями в формате BMP, то есть, мы можем описать объект класса TBitmap и получить в него снимок активного окна при помощи следующего вызова:
Сам объект класса TBitmap создавать нет необходимости, так как он будет автоматически создан вызываемым методом GetFormImage. Теперь нам хорошо бы было полученное изображение сохранить в файл, а для этого не плохо бы было назвать файл уникальным именем. Надо заметить, что в Windows, как и во многих операционных системах есть специальный механизм создания действительно уникальных имен файлов. Однако, имена файлов на выходе этих механизмов являются, по большей части, ничего не значащими наборами символов. Но суть этой технологии в уникальности, а это она делает. Мне же хотелось, чтобы имена несли смысловую нагрузку. Было бы здорово, если бы в них было записано имя исполняемого файла, имя формы, дата и время возникновения ошибки. Решается данная задача вот таким образом (Fn - переменная строкового типа):
Таким образом, мы получили генератор имен файлов, создающий имена, очень похожие на "PROJECT1.EXE_Form1_22092002_171956_debug.bmp", только без расширения. Теперь, запишем изображение в файл.
Итог - любое исключение в приложении вызовет автоматическую запись скриншота в файл формата BMP. Но, такой графический формат имеет одну неприятную особенность, дельфи умеет работать только с несжатыми файлами, которые благодаря этому имеют большой объем, а мне бы хотелось посылать эти файлы автоматически по e-mail, чтобы всегда быть в курсе ошибок программы. К счастью, фирма Borland бесплатно приложила к Delphi библиотеку работы с изображениями в формате JPEG. Поищите на компакт-диске с дельфи или на своем жестком диске в каталогах дельфи файлы, начинающиеся с букв "jpeg". Таким образом, подключаем модуль JPEG после модуля Graphics и пишем вот такой код:
Теперь из метода Catcher достаточно просто вызвать метод DoGenerateScreenshot и автоматическое сохранение скриншота в формате JPEG с качеством 100% вам обеспечено. Теперь, я хотел бы, чтобы генерировался текстовый отчет об ошибке. Это еще проще. Давайте, к примеру, сделаем отчет, в котором будут указаны имя компьютера и имя текущего пользователя. Пишем вот такие функции и процедуры:
Эта функция запросит у системы имя пользователя при помощи функции API GetUserName, и вернет строку "n/a", если имя пользователя получить не удалось.
Эта функция аналогична функции CollectUserName, только запрашивает имя компьютера.
Последняя процедура создает объект класса TStringList, наполняет его информацией, которую надо записать и сохраняет в файл, с именем, аналогичном имени файла со скриншотом. Остается только прописать вызов этого метода в процедуре Catcher. Заключение Вот, собственно и все. Что же мы получили? Мы получили невизуальный компонент, который автоматически подключается к обработчику исключительных ситуаций приложения. При этом, обработчик умеет создавать скриншот активного окна и записывать в текстовый файл интересующие нас параметры. Вроде бы неплохо. Автор: Григорий Ситнин 2003 Посетите наши форумы:Delphi, Kylix, PascalDelphi - общие вопросы | WinAPI | Работа с сетью | Delphi и Multimedia | Базы данных | Работа с oc Windows | Курилка | Паскаль | Delphi.Net | Kylix Языки программирования C++ | Java | .NET | Ассемблер Web Технологии Php | Perl | Asp | Html Програмное обеспечение Софт для Windows | Oc Windows | Linux | BSD Разное Железо | Взлом и защита | Периферия | Внекомпьютерная жизнь | Объявления Дружественные рассылкиНа этом позвольте проститься с Вами и пожелать удачи. Свои замечания и предложения отправляйте на е-майл, указанный ниже. С уважением, Виталий (NoilTeam@gmail.com) |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphicoding Архив рассылки |
Отписаться
Вспомнить пароль |
В избранное | ||