- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования delphi6»
- •6.100301 "Судовождение",
- •6.100302 "Эксплуатация судовых энергетических установок"
- •6.092201 "Электрические системы и комплексы транспортных средств",
- •Введение
- •Глава 1. Интегрированная среда Delphi. Принципы работы
- •1.1. Интегрированная среда Delphi
- •1.2. Принципы визуального программирования
- •Val(Edit1.Text,k1,sign);
- •Val(Edit2.Text,k2,sign);
- •Val(MaskEdit1.Text,r1,sig);
- •Val(МaskEdit2.Text,r2,sig);
- •1.3. Событийно-управляемые программы
- •1.4. Составление программ обработки массивов
- •I :integer;
- •I, j :integer;
- •1.5. Вывод на печать
- •Глава 2. Общие свойства компонентов
- •2.1. Иерархия компонентов
- •2.2. Имена и собственники компонентов
- •2.3. Родительские и дочерние компоненты
- •2.4. Положение, размеры и оформление компонентов
- •2.5.Указатели мыши
- •2.3. Окно редактора с готовым изображением указателя
- •2.6. Реакция на события от мыши и клавиатуры
- •2.6.1. События от мыши
- •2.6.2. События от клавиатуры
- •2.6.3. Клавиатура в ms-dos и Windows
- •2.6.4. Фокус ввода
- •2.7. Механизм действий Action
- •2.8. Иинтерфейс Drag&Drop
- •2.9. Иинтерфейс Drag&Dock
- •2.10. Поддержка справочной службы
- •2.11. Поддержка Сом
- •2.12. Свойства разного назначения
- •Глава 3. Использование компонентов общего назначения
- •3.1. Компоненты страницы Standard
- •3.1.1. TFrame - рама и шаблоны компонентов
- •6) Окно регистрации рамы в палитре компонентов
- •3.1.2. Создание шаблонов без рам
- •3.1.3. TMainMenu - главное меню формы (программы)
- •3.1.4. TPopupMenu - вспомогательное (локальное) меню
- •3.1.5. TLabel - метка для отображения текста
- •3.1.6. TEdit - ввод и отображение строки
- •3.1.7. TMemo - ввод и отображение текста
- •3.1.8. TButton - кнопка
- •3.1.9. TCheckBox - независимый переключатель
- •3.11. Компонент tCheckBox - независимый переключатель
- •3.1.10. TRadioButton - зависимые переключатели
- •3.1.11. TListBox - список выбора
- •3.1.12. TComboBox – комбинированный или раскрывающийся список выбора
- •3.1.13. TScrollBar - управление значением величины
- •3.1.14. TGroupBox - панель группирования
- •3.1.15. TRadioGroup - группа зависимых переключателей
- •3.1.16. TPanel - панель
- •3.1.17. TActionList - механизм действий
- •3.2. Компоненты страницы Аdditional
- •3.2.1. TBitBtn - кнопка с изображением
- •3.2.2. TSpeedButton - кнопка для инструментальных панелей
- •3.2.3. TMaskEdit - специальный редактор
- •3.2.4. TStringGrid - таблица строк
- •3.2.5. TDrawGrid - произвольная таблица
- •3.2.6. TImage - отображение картинок
- •3.2.7. TShape - стандартная фигура
- •3.2.8. TBevel - кромка
- •3.2.9. TScrollBox - панель с прокруткой
- •3.2.10. TСheckListBox - группа независимых переключателей
- •3.2.11. TSplitter - компонент для изменения размеров
- •3.2.12. TStaticText - метка для отображения текста
- •3.2.13. TControlBar - инструментальная панель
- •3.2.14. TApplicationEvents - обработчик сообщений Windows
- •3.2.15. TValueListEditor - специализированный редактор строк
- •3.2.16. TLabelEdit - однострочный редактор с меткой
- •3.2.17. TColorBox - список выбора цвета
- •3.2.18. TChart - построитель графиков
- •3.2.19. TActionManager - менеджер действий
- •3.2.20. TActionMainMenuBar - полоса меню для действий
- •3.2.21. TActionTollBar - полоса кнопок для действий
- •3.2.22. TCustomizeDIg - диалог настройки интерфейса
- •Глава 4. Многодокументный и однодокументный интерфейсы (mdi и sdi)
- •4.1. Mdi и sdi: сравнение
- •4.2. Разработка mdi—приложений
- •4.2.1. Разработка главного и информационного окон
- •4.2.2. Использование стандартных диалоговых окон
- •If OpenDialog1.Execute then
- •4.2.3. Разработка диалогового окна
- •Var dlg6:tokRightDlg;
- •X1,x2,x3:String;
- •If b1 or b2 then
- •4.2.4. Управление окнами
- •I:integer;
- •I:integer;
- •4.2.5. Работа с меню
- •Var tf5:tForm2;
- •4.3. Разработка sdi–приложения
- •4.3.1. Простое sdi–приложение
- •I,j :byte;
- •I,j :byte;
- •I,j :byte;
- •4.3.2. Управление окнами в sdi–приложениях
- •I :byte;
- •Var I :byte; ptr6 :tForm2;
- •I :byte;
- •Глава 5. Реализация алгоритмов решаемых задач на Delphi
- •5.1. Традиционный подход реализации алгоритмов на Delphi
- •5.2. Объектно-ориентированный подход
- •Val(Edit1.Text,k,sig);
- •Val(Edit2.Text,l,sig);
- •I,j :byte;
- •I,j :integer;
- •Inherited Create (Ni,Nj);
- •Val(Edit1.Text, p, sig1);
- •Val(Edit2.Text, q, sig2);
- •Val(Edit3.Text, r, sig3);
- •Vas :real;
- •Val(Edit4.Text,n,sig);
- •Глава 6. Тестирование и отладка приложений
- •6.1. Виды ошибок
- •6.2. Отладочные средства Delphi
- •6.3. Составление тестов
- •Глава 7. Исключительные ситуации
- •7.1. Обработка исключительных ситуаций
- •I, j, k : integer;
- •I:integer;
- •I, j, k : integer;
- •7.2. Обработка определенных исключительных ситуаций
- •Var I,j,k :shortint; p,q :real;
- •Заключение
- •Литература
- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования delphi6»
- •6.100301 "Судовождение",
- •6.100302 "Эксплуатация судовых энергетических установок"
- •6.092201 "Электрические системы и комплексы транспортных средств",
I:integer;
begin
try
{Преобразование символьной строки в число, }
{возможна исключительная ситуация}
i:=StrToInt(Edit1.Text);
except {Начинается часть обработки исключительной ситуации}
{выдается сообщение о причине возникновения исключительной ситуации}
ShowMessage ('Вы должны ввести целое число');
Edit1.SetFocus;
{Активным становится окно Edit1 для ввода нового значения }
end;
end;
При запуске этого миниприложения из cреды Delphi обработка исключительной ситуации выполняется самой средой и на экране появится сообщение (рис. 7.2.):
Рис. 7.2. Сообщение об исключительной ситуации
Обратите внимание на последнее предложение в сообщении (Use Step or Run to continue). Если вы закроете окно сообщения и нажмете на функциональную клавишу F7 – Step, то синяя полоса появится на строке программы, которая следует за вызвавшей исключительную ситуацию строкой. Таким образом, легко определить место возникновения исключительной ситуации, а причина видна из сообщения, выданного Delphi. Что случится при нажатии на функциональную клавишу F9 – Run при наличии и отсутствии блока try ¼except? Запустите и попробуйте!
Delphi позволяет создать законченное приложение, которое может быть запущено прямо из операционной системы. Для этого сначала необходимо запомнить файл проекта и файлы всех модулей (Как это делать, было рассмотрено выше) и создать файл с исполняемой программой (*.exe файл). Для создания *.exe файла необходимо выбрать из меню Delphi пункт Project и подпункт Build all. В результате будет создан *.exe файл с тем же именем, которое мы присвоили файлу проекта. При запуске приложения из Windows 95 и наборе неправильных символов в окне редактирования на экране появится сообщение, приведенное на рис. 7.3 и приложение будет ждать ввода нового значения.
Рис. 7.3. Пример обработки исключительной ситуации
Можно возразить, что то же самое достигается применением вместо функции StrToInt( ) процедуры val( ) и условных операторов, но это затрудняет слежение за логикой программы и при наличии большого количества преобразований заметно удлиняет программу.
В Delphi разрешены и вложенные блоки try¼except и try ¼finally. Предлагаем читателю самостоятельно разобраться, как будет работать приведенная ниже процедура при возникновении исключительной ситуации и без этого:
procedure TForm1.Button1Click(Sender: Tobject);
Var
I, j, k : integer;
ptr : pointer;
Begin
i:=0;
j:=0;
GetMem (ptr, 4098);
try
try
k:= j div i;
except
ShowMessage(‘Ошибка деления’);
end;
finally
FreeMem (ptr, 4098);
end;
End;
7.2. Обработка определенных исключительных ситуаций
Причина возникновения исключительных ситуаций может быть самой различной. В больших и сложных программах было бы целесообразно более точно определить причину возникновения исключительной ситуации и сообщить об этом пользователю. При запуске приложения из Delphi это делается автоматически. Обратите внимание на текст сообщения на рис. 7.2.: “Exception class EConvertError with Message ‘ ‘rtrt’ is not a valid integer value’ “. Нам сообщают, что возник класс исключения EConvertError (ошибка преобразования) и это вызвало сообщение о том, что¼
Поставим задачу: обеспечить определение класса исключительной ситуации и при запуске приложения из операционной системы. Некоторые классы исключительных ситуаций Delphi приведены в табл. 7.1. Полный перечень можете узнать традиционным способом.
Таблица 7.1
Класс ИС |
Описание |
EBreakPoint |
В программе имеется точка прерывания |
EConvertError |
Ошибка преобразования (см. последний пример) |
EDivByZero |
Деление целого числа на нуль |
EInOutError |
Ошибка файлового ввода/вывода |
EIntOverFlow |
Переполнение целочисленного значения |
EInvalidCast |
Недопустимое приведение типов |
EInvalidOp |
Недопустимая математическая операция с плавающей точкой |
EOutOfMemory |
Невозможно выделить память требуемого объема |
EOverflow |
Переполнение значения с плавающей точкой |
ERangeError |
Значение за пределами диапазона допустимых значений |
EUnderflow |
Потеря значимости в выражении с плавающей точкой (слишком малое значение) |
EZeroDivide |
Деление числа с плавающей точкой на нуль |
Для иллюстрации рассмотрим простую программу с преобразованиями и вычислениями. Приложение содержит одну форму и два модуля. Для экономии места приведем лишь реализацию кнопки запуска вычислений и полностью модуль вычислений. Остальное читателю должно быть понятно из предыдущего изложения:
procedure TForm1.Button1Click(Sender: TObject);
Var
Res :real;
Rida :string;
begin
{Вызов процедуры, передача исходных данных, получение результата}
mina(Edit1.Text,Edit2.Text,Edit4.Text,res);
{Вывод результата}
rida:=FloatToStr(res);
Edit3.Text:=rida;
end;
unit mod2;
interface
procedure mina(s1,s2,s3:string; var r:real);
implementation
{Для обеспечения вызова стандартных процедур и функций}
uses SysUtils, Dialogs;
procedure mina(s1,s2,s3:string; var r:real);