- •1. Теоретические основы объектно – ориентированного программирования 5
- •2. Использование системы программирования Delphi для создания Windows-приложений 9
- •3. Лабораторный практикум 27
- •Введение
- •1. Теоретические основы объектно – ориентированного программирования
- •1.1.Объектная модель и ее элементы.
- •1.2.Основные понятия объектно-ориентированного подхода - объект и класс.
- •1.3.Методы построения классов.
- •2. Использование системы программирования Delphi для создания Windows-приложений
- •2.1. Интерфейс интегрированной среды разработки Delphi
- •2.2. Синтаксические правила языка Object Pascal
- •2.3. Создание и структура пользовательских приложений в среде Delphi
- •2.4. Структура модуля (*.Pas)
- •2.5. Создание формы и написание откликов на события
- •1) Компоновка формы и задание свойств компонентов
- •2) Написание отклика на событие
- •2.6. Компиляция и исполнение программы
- •2.7. Ввод и вывод данных. Функции преобразования типов данных
- •3. Лабораторный практикум Лабораторная работа 1. Разработка приложения Калькулятор
- •Лабораторная работа 2. Использование курсоров в приложениях Windows.
- •Лабораторная работа 4. Создание простого текстового редактора.
- •Лабораторная работа 5. Рисование мышью в форме
- •Лабораторная работа 6. Применение графических компонентов
- •Лабораторная работа 7.Создание числовых изображений
- •Лабораторная работа 8. Создание текстурных заливок
- •Лабораторная работа 9. Поддержка справочной системы. Создание всплывающих подсказок.
- •Лабораторная работа 10.Создание видеопроигрывателя
- •Лабораторная работа 12.Создание браузера
- •Лабораторная работа 13. Работа с внешним файлом.
- •Лабораторная работа 14. Работа с базами данных.
- •Лабораторная работа 15. Создание многооконных приложений.
- •Литература Основная литература
- •Дополнительная литература
2.6. Компиляция и исполнение программы
После завершения формирования формы и написания программного кода отклика на событие, проект запускается на исполнение.
Запуск программы на исполнение производится нажатием на кнопку Run, расположенную на панели Debug, либо командой Run - Run (клавиша F9).
После написания программа может содержать различные виды ошибок.
Синтаксические ошибки проверяются и устраняются на этапе компиляции. Строка, содержащая ошибку выделяется коричневым цветом, а в окне отладки, расположенном в нижней части окна редактора кода появляется сообщение с видом найденной ошибки.
Однако возможны не только синтаксические, но и логические ошибки. Тогда приложение будет нормально компилироваться, выполняться, но будет выдавать неверные результаты
Чтобы получить информацию о местоположении ошибки, надо заняться отладкой, которая позволит вам заглянуть внутрь программы и увидеть, как выполняются операторы.
Для того чтобы отследить выполнение программы, надо остановить выполнение на каком-то операторе. Для этого есть несколько способов.
1) Команда Run | Run To Cursor (горячая клавиша F4). Она обеспечивает выполнение приложения вплоть то того момента, когда должен выполняться оператор, на котором находится курсор в окне Редактора Кода.
2) Простановка точек прерывания. Следует щелкнуть мышью в окне Редактора Кода на полосе слева от того оператора, перед выполнением которого вы хотите остановиться. В полосе появится красная точка, а сама строка окрасится красным цветом. Это значит, что вы ввели на этом операторе так называемую точку прерывания.
Применение точек прерывания предпочтительнее, т.к. можно установить сразу несколько точек прерывания в разных местах программы, поскольку в сложной разветвленной программе не всегда ясно, по каким ветвям алгоритма проходит ее выполнение. Тогда легче это понять, установив одновременно точки прерывания в разных ветвях. Кроме того, в точки прерывания можно вводить условия останова, что очень полезно в циклических программах.
2.7. Ввод и вывод данных. Функции преобразования типов данных
Для ввода данных часто используются окно редактирования Edit, позволяющее вводить одиночные текстовые ли числовые (после преобразования) данные (свойство Text).
Например, Fam := Edit1.Text;
Для ввода массивов данных удобно использовать таблицу StringGrid. Элементы таблицы нумеруются по столбцам и строкам, начиная с 0. Доступ к ячейкам производится через свойство Cells[col, row]. Таблица StringGrid по умолчанию содержит фиксированные строки и столбцы (свойство FixedCols и FixedRows), которые не перемещаются при использовании полосы прокрутки. При использовании для ввода массива их следует убрать - назначить свойствам FixedCols и FixedRows значение 0, а также разрешить редактирование данных в ячейках: назначить True свойству Option.goEditing. Нумерация строк и столбцов по умолчанию ведется с 0, поэтому первая ячейка таблицы: Cells[0,0].
Например, для ввода массива из 10 фамилий можно использовать следующий цикл:
For i:=1 to 10 do
Fam[i] :=StringGrid1.Cells[i-1,0];
Для ввода данных также используется функция InputBox(), выводящая заголовок, текстовое сообщение, поле ввода с указанным значением по умолчанию и кнопку ОК. Синтаксис:
InputBox( ACaption: String, APromt: String , ADefalt: String);
Где AСaption - заголовок окна, AProm - текстовое сообщение выводимое в окно, а ADefalt - значение по умолчанию, выводимое в поле ввода.
Пример:
Name:=InputBox('Окно ввода данных',' Введите имя', ' ' );
Переменной строкового типа Name присваивается значение, введенное пользователем в поле ввода (по умолчанию поле ввода пустое).
Или целой переменной b присваивается числовое значение, введенное в поле ввода диалогового окна:
b := StrToInt (InputBox('Окно ввода данных', ' Введите значение переменной b ', ' ' ));
Текст, вводимый пользователем в окно редактирования Edit, таблицу StringGrid, поле Memo, диалоговое окно InputBox и др. объекты представляет собой текстовую строку типа string. Поэтому при вводе в них чисел, над которыми предполагается выполнение арифметических операций, этот текст следует преобразовать к нужному числовому типу.
Для преобразования строки в числа используются функции:
StrToFloat() - преобразует тип данных String в действительное число;
StrToInt() - преобразует тип данных String в целое число;
Например, выражение StrToFloat(Edit1.Text) возвращает действительное число, получение в результате преобразования текста в окне Edit1.
Далее эти числа можно использовать в любых математических выражениях.
Для отображения результатов расчета часто используется функция ShowMessage(), отображающая диалоговое окно с текстовым сообщением. В качестве аргумента этой функции используется строка или совокупность строк соединенных знаком "+" типа String, поэтому числовые данные перед выводом их в окно следует преобразовать к строковому типу данных.
Также часто используется вывод данных в метку Label, свойству Caption которой присваивается нужный текст, в который включаются результаты расчета (путем преобразования их к типу String).
Итак, в эти элементы можно выводить только текст (данные типа String), поэтому все числа следует перевести в строковый тип данных, для чего используются функции:
FloatToStr() - переводит действительное число в строку
IntToStr() - переводит целое число в строку.
Например, вывод данных в диалоговое окно:
ShowMessage(' Дискриминант равен ' + FloatToStr(D));
Или в метку Label1, заранее созданную на форме:
Label1.Caption:= ' Дискриминант= ' + FloatToStr(D);
Для вывода надписи, используемой для вывода данных пользователем в несколько строк используется код клавиши Enter (13), осуществляющей переход на новую строку, следующим образом:
Label1.Caption:= ' Дискриминант= ' + FloatToStr(D) + #13 + 'Первый корень=' + FloatToStr(х1) + #13 + 'Второй корень=' + FloatToStr(х2) ;
Для формирования надписи Label на форме в несколько строк достаточно включить (поменять на True) свойство WordWrap метки. Выравнивание текста определяется свойством Alignment (например, по центру - taCenter)
Пример процедуры, вычисляющей при щелчке на кнопке Button1 произведение чисел a и b, вводимых пользователем в поля ввода Edit1 и Edit2 и использующей преобразование типов данных:
procedure TForm1.Button1Click(Sender: TObject);
var а, b, c: real;
begin
a := StrToFloat(Edit1.Text); // Первое число
b := StrToFloat(Edit2.Text); // Второе число
c := a* b; // Произведение
ShowMessage('Произведение чисел a*b = ' + FloatToStr(c));
Label1.Caption:='Произведение чисел a*b = ' + FloatToStr(c);
end;