Теоретические сведения. Создание справочной системы
Создание справочной системы
1. В текстовом редакторе, например Word, вводим текст справки содержащий ссылки, оформленные с помощью специальных атрибутов, и сохраняем этот текст в формате rtf (в Word: Файл®Сохранить как… в отрытом окне выбрать в строке Тип файла формат rtf) (рис. 7.1).
2. Для преобразования rtf- файла в файл hlp вызываем программу hcrtf.exe, которая находится в папке Delphi7\Help\Tools. В появившемся окне этого приложения выбираем File®New… Help Project (рис. 7.2) и далее вводим имя файла проекта Helpа (это будет файл с расширением hrj).
Рис. 7.1. Сохранение созданного файла в формате rtf
3. Открывается окно проекта help -файла (рис. 7.3). С помощью кнопки , а затем кнопки добавляем в проект файл rtf -формата.
4. С помощью кнопки , а затем кнопки ссылки, введенные в rtf- файле ставим в соответствие номерам (рис. 7.4).
5. Вернувшись в основное окно, увидим установленные параметры проекта (рис. 7.5).
6. Нажав кнопку , выполним компиляцию проекта и создадим справочный файл, имя которого совпадет с именем проекта, а расширение будет hlp. Результаты компиляции отобразятся в специальном окне (рис. 7.6). Если сообщения об ошибках отсутствуют, то справочный файл содержит корректную информацию и готов к использованию. Если при компиляции были выявлены ошибки, то справочный файл все равно создается и может быть использован, однако отдельные его элементы, например ссылки, могут быть не корректными.
Рис. 7.2. Окно приложения по созданию проекта hlp- файла
Рис. 7.3. Окно проекта hlp- файла
Рис. 7.4. Окно установки соответствия ссылки идентификатору раздела
Рис. 7.5. Установленные параметры проекта
Рис. 7.6. Окно результатов компиляции проекта hlp -файла
7. Для проверки созданный справочный файл загрузить и просмотреть в окне справки (меню File ® Run WinHelp …).
8. Для продолжения работы над проектом необходимо закрыть окно результатов или переключиться в окно проекта командой Window ® <Project Name>, где <Project Name> — имя файла проекта.
9. Для подключения справочного файла к приложению имя hlp файла приложения следует указать в поле Helpfile страницы Application окна параметров проекта (Project ® Options … страница Application в поле Helpfile) (рис. 7.7). В результате при запуске приложения указанный файл будет подключен автоматически. Или же подключить и заменить справочный файл можно динамически с помощью оператора вида
Application.HelpFile:= <Имя справочного файла>;
10. В свойстве HelpContext управляющих элементов, которые должны быть связаны с Helpом, указать номер идентификатора необходимого раздела справки. Тогда при нажатии клавиши <F1> на этих элементах будет автоматически вызываться этот раздел справочного файла. Если меню приложения содержит команду Помощь или ей подобную, то для вызова справки нужно подготовить соответствующий обработчик. Этот обработчик может содержать следующий код:
Application.HelpContext(<идентификатор раздела справки>);
В результате вызывается указанный раздел подключенного файла справочной системы.
Рис. 7.7. Окно подключения hlp- файла к проекту
Порядок выполнения работы
1. Создать справочный файл приложения, разработанного в предыдущей лабораторной работе (нечетные варианты для приложения лабораторной работы № 19, а четные – для приложения лабораторной работы № 20).
2. Справочный файл подключить к соответствующим управляющим элементам формы. Справочный файл должен содержать не менее 5 разделов и не менее трех внутренних ссылок. В меню добавить пункт «Справка», при выборе которого должен загружаться один из разделов справки.
3. Отчет о лабораторной работе должен содержать файл справки со всеми атрибутами и скрытыми элементами, а также распечатку исходного кода основного модуля проекта (project).
Контрольные вопросы
1. Основные этапы создания справочного файла.
2. Понятие атрибута текстового файла справки.
3. Понятие ссылки.
4. Правила оформления в текстовом файле ссылок и атрибутов.
5. Компиляция справочного файла.
6. Правила подключения справочного файла.
Приложение. Стандартные классы исключений
Класс
| Родитель[BP7]
| Обрабатываемое исключение
| EAbort
| Exception
| Реализует «тихую» (без какого-либо сообщения) обработку любого исключения
| EAbstractError
| Exception
| Программа пытается вызвать абстрактный метод
| EAccessViolation
| Exception
| Программа пытается обратиться к не принадлежащей ей области памяти или использует недействительный указатель
| EAppletException
| Exception
| Ошибка связана с созданием управляющих панелей в апплетах
| EArrayError
| Exception
| Возникает из-за различного рода ошибок при работе с массивами (неверный индекс, попытка вставить элемент в массив фиксированной длины или в отсортированный массив и т. п.)
| EAssertionFaild
| Exception
| Возбуждается отладочной процедурой Assert, когда тестируемое ею логическое выражение имеет значение False
| EBitsError
| Exception
| Программа пыталась обратиться к свойству Bits объекта ТВts с индексом меньше нуля или больше максимально допустимого значения
| EBrokerException
| Exception
| Объект-брокер не может найти сервер
| ECacheError
| Exception
| Ошибка в наборе данных для компонента TDecisionCube
| EClassNotFound
| EFilerError
| Не найден соответствующий класс для компонента, читаемого из потока данных. Обычно оно возникает в случае, когда в форму вставлен нестандартный компонент, а в библиотеке компонентов Delphi отсутсвует связанный с ним класса
| ECommonCalendarError
| Exception
| Возникает в объектах класса TCommonCalendar и его потомках, когда вводится неверная дата
| EComponentError
| Exception
| Появляется при различных манипуляциях программы с компонентом (программа не может зарегистрировать компонент, переименовать его или для его работы потребуется интерфейс СОМ, который компонентом не поддерживается)
| EControlC
| Exception
| Возникает при нажатии клавиш Ctrl+C в случае работы приложения в режиме консоли
| EConvertError
| Exception
| Ошибка преобразования в функциях
StrToInt или StrToFloat
| ECorbaDispatch
| Exception
| Возникает в программах, использующих технологию CORBA, в случае ошибок, связанных с несовпадением интерфейсов сервера и брокера данных
|
Продолжение приложения
Класс
| Родитель
| Обрабатываемое исключение
| ECorbaException
| Exception
| Возникает в программах, использующих технологию CORBA
| ECorbaUserException
| ECorbaException
| Появляется как определяемая пользователем реакция на ошибки интерфейса
| EDatabaseError
| Exception
| Возникает, когда компонент обнаруживает ошибку в базе данных
| EDateTimeError
| Exception
| Возбуждается компонентом TDateTimePicker при попытке ввода неверной даты или времени
| EDBClient
| EDatabaseError
| Ошибка связана с неправильной работой TClientDataSet
| EDBEditError
| Exception
| Возникает, когда компонент пытается использовать данные, несовместимые с заданной маской
| EDBEngineError
| EDatabaseError
| Связана с ошибками BDE
| EDimensionMarError
| Exception
| Возникает, когда используемый в кубе решений набор данных не имеет агрегатных полей
| EDimlndexError
| Exception
| Связана с нарушением размерности массива данных для куба решений
| EDivByZero
| EIntError
| Ошибка целочисленного деления на ноль
| EDSWriter
| Exception
| Ошибка при подготовке провайдером пакета набора данных
|
| EExternalException
| EStreamError
| Возникла ошибка, код которой не является предопределенным в Delphi
|
| EFCreateError
| EStreamError
| Ошибка при создании файла. Например, попытка создать файл на устройстве, предназначенном только для чтения, или в несуществующем каталоге
|
| EFilerError
| EStreamError
| Программа пытается повторно зарегистрировать в потоке данных один и тот же класс
|
| EFOpenError
| EStreamError
| Ошибка открытия потока данных. Например, попытка открыть несуществующий файл
|
| EHeapException
| Exception
| Ошибка определена неправильными операциями, связанными с динамической памятью
|
| EIBClientError
| EIBError
| Ошибка обусловлена с функционированием IBX-клиента
|
| EIBError
| EDatabaseError
| Общая ошибка технологии IBX
|
| EIBInterbaseError
| EIBError
| Ошибка связана с функционированием сервера в технологии IBX
|
| EInterpreterError
| Exception
| Возникает, когда компонент класса TDataBlockInterpeter не может интерпретировать значения блока данных
|
| EIntError
| Exception
| Любая ошибка в целочисленных вычислениях
|
| | | | | | |
Продолжение приложения
Класс
| Родитель
| Обрабатываемое исключение
| EIntfCastError
| Exception
| Попытка недопустимого приведения типов в OLE-объектах
| EIntOverflow
| EIntError
| Ошибка целочисленного переполнения: программа пытается присвоить целочисленной переменной значение, выходящее из 32 двоичных разрядов
| EInvalidArgument
| EMatchError
| Возбуждается математическими функциями при выходе аргумента из допустимого диапазона
| EInvalidCast
| Exception
| Программа не осуществит недопустимое преобразование типов с помощью оператора as
| EInvalidGraphic
| Exception
| Программа не может загрузить в контейнер изображение из файла, который имеет недопустимый формат (допустимыми форматами являются растр, метафайл, курсор, значок)
| EIlnvalidGraphic-Operation
| Exception
| Программа не выполнит недопустимую графическую операцию
| EIlnvalidGridOperation
| Exception
| Программа пытается выполнить недопустимую операцию с таблицей (например, обратиться к несуществующим столбцу или строке)
| EInvalidlmage
| EFilerError
| Программа пробует прочитать ресурс изображения из файла, в котором этого ресурса нет
| EInvalidOp
| EMatchError
| Ошибка в операциях с плавающей точкой (недопустимая инструкция, переполнение стека сопроцессора и т. п.)
| EInvalidOperation
| Exception
| Не имеющий окна компонент пытается выполнить операцию, требующую дескриптора окна
| EInvalidPointer
| ЕНеарException
| Попытка использовать недействительный указатель
| EListError
| Exception
| Эта ошибка связана с неверными действиями программы по отношению к разного рода спискам. Например, обращение к элементу списка с индексом меньше нуля или больше максимально допустимого
| ELowCapacityError
| Exception
| Ошибка появляется при попытке выделения памяти на устройстве, у которого отсутствуетнет необходимая свободная память
| EMatchError
| Exception
| Любая ошибка при выполнении вычислений с плавающей точкой
| EMenuError
| Exception
| Ошибка при работе программы с меню. Например, при добавлении элемента с идентификатором, который уже определен в меню
| EMCIDiviceError
| Exception
| Ошибка возникла в медиаплейере
| EMethodNotFound
| EFilerError
| Программа прочитала из потока данных объект, но не может найти связанный с классом объекта метод
|
Продолжение приложения
Класс
| Родитель
| Обрабатываемое исключение
|
| EMonthCalError
| ECommonCa-lendarError
| Возбуждается компонентом класса TMonthCalendar при попытке ввода неправильной даты
|
| EOleCtrlError
| Exception
| Программа не может установить связь
с элементом ActiveX
|
| EOleError
| Exception
| Низкоуровневая ошибка в технологии OLE
| EOleException
| EOleSysError
| Программа использует неверный OLE-интерфейс
| EOleRegistrationError
| EOleError
| Ошибка регистрации OLE-объекта в реестре Windows
| EOleSysError
| EOleError
| Возникает при неправильном выполнении команды OLE автоматизации
| EOutlineError
| Exception
| Возникает при ошибке доступа к компоненту класса TOutLine
| EOutOfMemory
| EHeapException
| Эта ошибка возникает, когда программа запрашивает слишком большой для данной конфигурации Windows объем памяти
| EOutOfResource
| EOutOfMemory
| Программа требует от Windows дескриптор окна, но операционная система исчерпала лимит дескрипторов
| lEOverflow
| EMatchError
| Результат операций с плавающей точкой слишком велик, чтобы уместиться в регистрах сопроцессора
| EPackageError
| Exception
| Возникает при ошибке доступа к пакету
| EParserError
| Exception
| Ошибка преобразования текста в двоичные данные при чтении из потока
| EPrinter
| Exception
| Система Windows сообщила программе об ошибке принтера
| EPrivilege
| Exception
| Программа пытается выполнить привилегированную операцию, которая может быть реалиизована только ядром Windows
| EPropertyConvertError
| Exception
| Ошибка при чтении или записи значения свойства
| EPropertyError
| Exception
| Ошибка доступа к свойству при чтении или записи
| EPropReadOnly
| Exception
| Программа пытается изменить значение свойства, которое нельзя менять (при использовании технологии OLE)
| EPropWriteOnly
| Exception
| Программа пытается прочитать свойство, предназначенное только для записи
| ERangeError
| EIntError
| Целочисленный результат превышает емкость целого типа данных
| EReadError
| EFilerError
| Программа не может прочитать из потока данных нужного количества байтов
| EReconcileError
| EDatabase-Error
| Ошибка обновления данных BTClientDataset
| ERegistryException
| Exception
| Ошибка, связанная с операцией над реестром Windows
| | | | | | |
Окончание приложения
Класс
| Родитель
| Обрабатываемое исключение
|
| EResNotFound
| Exception
| Программа не может найти указанный ресурс в файле ресурсов
| ESocketConnectionError
| Exception
| Ошибка связана с работой с сокетами Windows
| ESocketError
| Exception
| Ошибка связана с работой с сокетами Windows
| EStackOverf low
| Exception
| Исчерпан объем выделенного программе стека
| EStreamError
| Exception
| Любая ошибка при работе с потоком данных
| EStringListError
| Exception
| Программа ссылается на строку, индекс которой выходит из диапазона возможных значений для списка строк
| EThread
| Exception
| Ситуация борьбы за общий ресурс в программе с несколькими потоками команд
| ETreeViewErrorKTTreeView
| Exception
| Указан неверный индекс при обращении
| EUnderflow
| EMatchError
| Результат операций с плавающей точкой слишком мал, чтобы уместиться в регистрах сопроцессора (исчезновение порядка)
| EUnsupportedTypeError
| Exception
| Выбран недопустимый тип поля в качестве измерения в кубе решений
| EUpdateError
| Exception
| Ошибка обновления набора данных провайдера
| EVariantError
| Exception
| Ошибка при работе с типом Variant: недопустимое приведение типов; недопустимая операция; обращение к скалярной переменной как к варианту-массиву; индекс варианта-массива выходит из допустимых значений
| EWin32Error
| Exception
| Ошибочное обращение к API-функции Windows. Свойство Mess age содержит номер ошибки и связанное с ней сообщение
| EWriteError
| EFilerError
| Ошибка записи в поток данных
| EZeroDivide
| EMatchError
| Вещественное деление на ноль
| | | | | | |
Библиографический список
Delphi 3: библиотека программиста/ Пер. с англ. Тейлор и др. — СПб.: Питер, 1998.
Delphi 7/ Под общ. ред. А. Д. Хомоненко. — СПб.: БХВ-Петербург, 2004.
Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н. Задачи по программированию. - М.: Наука, 1988.
Архангельский А. Я. Delphi 6: Справ. пособие. — М.: ЗАО «Издательство БИНОМ», 2001.
Бобровский С. Delphi6 и Kylix: библиотека программиста. — СПб.: Питер, 2002.
Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. – Х.: Фолио, Ростов н/Д: Феникс, 1997.
Бурсиян Э.В. Задачи по физике для компьютера: Учеб. пособие для студентов. - М.: Просвещение, 1991.
Глинский Я. Н., Анохин В. Е., Ряжская В. А. Бейсик. QBasic и Visual Basic. — СПб: ООО «ДиасофтЮП», 2002.
Дарахвелидзе П. Г., Марков Е. П. Программирование в Delphi7. — СПб.: БХВ-Петербург, 2003.
Информатика: Задачник-практикум: В 2 т. /Под ред. И. Г. Семакина, Е.К. Хеннера.- М.: Лаборатория Базовых Знаний, 2000.
Карасева Т.В. Сборник задач и упражнений по основам информатики и вычислительной технике. - М.: Колледж, 1995.
Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ. - М.: Наука, 1986.
Конопка Р. Создание оригинальных компонент в среде Delphi/Пер. с англ. Рэй Конопка. — К.:НИПФ «ДиаСофт Лтд.», 1996.
Культин Н. Б. Основы программирования в Delphi7. — СПб.: БХВ-Петербург, 2003.
Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов. - М.: Наука, 1989.
Поляков Д.Б., Круглов Л.Ю. Программирование в среде Турбо Паскаль (версия 5.5). - М.: МАИ А/О "Росвузнаука", 1992.
Прайс Д. Программирование на языке Паскаль: Практическое руководство. - М.: Мир, 1987.
Фаронов В. В. Delphi. Программирование на языке высокого уровня: Учебник для вузов. — СПб.: Питер, 2004.
[BP1]Мне делали замечание, что если это воросы, то форма предложения должна быть вопросительной и заканчиваться знаком вопроса J
[BP2]Отключение интегрированной отладки приведет к невозможности пошагового выполнения и просмотра значений переменных в окошеке Watch
[BP3]Я чуть призабыл - abstract’ные методы в план не входят?
[BP4]По моему скромному мнению, на этом и на нескольких рисунках ранее (с примерами программ) слишком много пустого пространства J
[BP5]Гы-гы J
[BP6]Мне кажется нумерация неверная. В начале методики было 13, а здесь вдруг 6, плюс может быть путаница с учетом первой части
[BP7]Может отсортировать по родителю и общих родителей объеденить в одну ячейку, и, например, с вертикальным текстом?
Не нашли, что искали? Воспользуйтесь поиском:
|