bannerbannerbanner
полная версияПрограммирование на Delphi 7

Сергей Николаевич Талипов
Программирование на Delphi 7

3. ОТЛАДКА ПРОГАММЫ DELPHI

Для отладки программы на «Делфи» необходимо проделать следующее:

Установить точку остановки. Для этого нужно щелкнуть слева от текста в окне кода программы на первом отлаживаемом операторе. Появится красная точка и полоска, указывающая на установку точки остановки. Снятие точки остановки происходит аналогичным образом.

Запустить программу, например нажав клавишу клавиатуры «F9» и подождать, пока она остановиться на точке остановки.

Нажатие клавиши клавиатуры «F8» вызовет выполнение одного следующего оператора программы без захода в подпрограммы, а нажатие на клавишу «F7» вызовет выполнение одного следующего оператора с заходом в подпрограммы, если они есть.

Нажатие клавиш «F8» или «F7» нужно производить столько раз, пока программа не перейдет на нужный оператор (об этом можно судить по специальному синему курсору трассировки с зеленой стрелочкой).

После установки курсора трассировки на нужном месте программы можно посмотреть значение переменных, указав на них мышью. Рядом с курсором мыши появится ярлычок с текущим значением переменной.

После просмотра значений переменных нужно вновь нажать на кнопку запуска «F9» для обычного продолжения хода выполнения программы.

4. МЕТОДЫ, СОБЫТИЯ И МЕТОДЫ В DELPHI

Каждый компонент в «Делфи» имеет свои свойства, события и методы. Свойства компонента определяют положение компонента на экране, его цвет, размеры и др. Свойства характеризуют все параметры компонента, их можно задавать и смотреть через Инспектор Объектов, а также через код программы. Через свойства программа узнает, что ввел пользователь в компонент, в какое место экрана переместил окно и др.

Переменная := Имя_компонента . Имя_Свойства ;

S:=Edit1.text; k:=strtoint(Edit1.text);

Имя_компонента . Имя_Свойства := Переменная_или_константа ;

Edit1.text:=inttostr(k); Form1.Caption:=’Delphi’;

События компонента – это его реакция на различные воздействия пользователя или какую-либо программную ситуацию. Наиболее распространенные события у компонент – это событие щелчка левой кнопки мыши по компоненту, событие двойного щелчка мышью по компоненту, событие перемещения указателя мыши над компонентом, событие ввода данных с клавиатуры в компонент, событие появления компонента на экране, событие изменения размеров у компонента и др.

Каждое событие компонента обрабатывается специальной процедурой, называемой процедурой -обработчиком события. Процедуры обработчики создаются через Инспектор Объектов (для привязки пустой процедуры – обработчика к конкретному событию) и Инспектора Кода (в котором программист вписывает нужные команды в пустую процедуру – обработчик). Написание процедур – обработчиков событий является основной частью создания программного продукта на «Делфи». Другую часть времени программист тратит на создание интерфейса программы, ее доработку и тестирование.

Методы компонента – это команды, которые имеет данный компонент. Методы бывают двух типов: методы-процедуры и методы-функции. Через методы программист «просит» компоненты сделать то или иное действие с самим собой. Например, у формы (окна) можно попросить закрыться или открыться, переместится по экрану. У компонента «TMemo» (текстового редактора) – можно попросить сбросить введенный пользователем в него текст на диск, или попросить очистку окна редактирования. Методы вызываются из обработчиков событий как обычные команды, например «begin memo1.Clear; end;» – «просим» компонент «Memo1» очистить окно ввода.

Имя_компонента . Имя_Метода_Процедуры (возможные параметры) ;

Form1.Show; Form1.Close; Edit2.SetFocus;

Переменная := Имя_компонента . Имя_Метода_Функции (возможные параметры) ;

f:=Edit2. CanFocus; if f=false then Edit2.SetFocus;

Для привязки к компоненту обработчика какого-либо события необходимо выделить его мышью, в Инспекторе Объектов перейти во вкладку «Events/События», выбрать нужное событие и дважды щелкнуть мышью в пустую ячейку напротив него. В появившейся процедуре необходимо написать код обработчика данного события.

Для установки одновременно какого-либо свойства у нескольких компонент необходимо выделить их мышью в охватывающий четырехугольник, после чего в Инспекторе Объектов задать нужное значение нужному общему свойству.

Для точного расположение компонента по центру на форме можно вызвать для него вспомогательное меню правой кнопкой мыши и выбрать пункт «Align». Для настройки правильной работы клавиши «Tab» (обхода фокуса ввода) выберете пункт «TabOrder» во вспомогательном меню.

Фокус ввода – это специальный графический курсор, показывающий, в какой компонент будут вводиться данные с клавиатуры, а также показывающий, какой компонент будет активизирован при нажатии клавиши «Enter» или клавиши «Пробел».

ЛЕКЦИЯ № 3

1. ЭЛЕМЕНТЫ ЯЗЫКА, СТРУКТУРА ПРОГРАММЫ И МОДУЛЕЙ

Программа на языке «Делфи», как ранее было отмечено, состоит из файла проекта (файла с расширением «DPR») и одного или нескольких модулей (файлы с расширением «PAS»). Файл проекта создается и модифицируется «Делфи» автоматически, и вручную изменять его нельзя. Чтобы увидеть файл проекта нужно вызвать опцию основного меню «PROJECT | VIEW SOURCE». Рассмотрим подробно содержимое примерного файла проекта.

Рис. 3.1. Структура файла проекта

Обозначения:

1 – зарезервированное слово

2 – комментарии

3 – директивы компилятора

4 – имя программы (проекта)

5 – имя подключаемого модуля

6 – имя файла, в котором находится подключаемый модуль

7 – операторы проекта

8 – команда инициализации проекта (загрузки программы в операционную среду Windows, настройка внутренних системных переменных и др.)

9 – команда создания на экране окна (формы) с именем «FORM1»

10 – передача управления проекту

Любой модуль в языке «Делфи» имеет структуру, аналогичную структуре модулей в языке PASCAL. Рассмотрим общую структуру модулей «Делфи».

Рис. 3.2. Общая структура модуля

Обозначения:

1 – имя модуля

2 – зарезервированное слово

3 – секция интерфейсных объявлений, в которой описываются программные элементы (типы данных переменные, процедуры и функции), которые будут «видимы» другим программным модулям и проектам, использующих данный модуль

4 – секция реализации, в которой непосредственно находятся тексты процедур и функций модуля

Рассмотрим модуль «Делфи», описывающий форму (окно) с одной кнопкой.

Рис. 3.3. Структура модуля-окна «Делфи»

Обозначения:

1 – имя модуля

2 – имена используемых в данном модуле других модулей

3 – тип «Tform1» является потомком пустого Windows-окна типа «TForm». Тип «Tform1» дополняет родительский тип «TForm» кнопкой с именем «Buttom1» и одной процедурой «Button1Click» по обработке нажатия на данную кнопку

4 – перечень компонент окна (объектов, переменных, процедур и функций)

5 – переменные, «видимые» только в данном типе «Tform1» (окне «Form1»), и не видные в других модулях (окнах), использующих данный модуль

6 – переменные, «видимые» и в типе «Tform1» (окне «Form1»), и в других модулях (окнах), использующих данный модуль

7 – описание переменной-объекта «Form1» типа «Tform1», объявленного в разделе «Type»

8 – подключение ресурсного файла с данными о компонентах окна «Form1» (положение компонент на экране, их размер, цвет и др.)

9 – текст-реализация раннее описанной процедуры

Элементы программы – это неделимые части программы, а именно зарезервированные слова, идентификаторы, типы, константы, переменные, метки, подпрограммы (процедуры и функции) и комментарии. В языке «Делфи» все элементы программ совместимы с языком PASCAL сверху – вниз, т.о. все типы данных, операторы и операции, имеющиеся в PASCALе, доступны и в «Делфи».

ЛЕКЦИЯ № 4

1. ОСНОВНЫЕ ТИПЫ ДАННЫХ В «ДЕЛФИ»

Любые данные в «Делфи», как и в языке PASCAL, характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь данное, а также множество применимых к нему операций. Рассмотрим целые типы данных «DELPHI».


ТипДиапазон значенийФизический формат
Byte (B)0 .. 255 1 байт, без знака
Word (W)0 .. 65 535 2 байт, без знака
Integer (I)-2 147 483 648 .. 2 147 483 647 4 байт, со знаком
Cardinal 0 .. 2 1474836474 байт, без знака
Shortint (S)-128 .. 1271 байт, со знаком
Smallint -32 768 .. 32 767 2 байт, со знаком
Longint (L)-2 147 483 648 .. 2 147 483 647 4 байт, со знаком
LongWord 0 .. 4 294 967 2954 байт, без знака
Int64-9E18 .. 9E188 байт, со знаком

Табл. 1. Целые типы

Для целых типов применимы следующие стандартные процедуры и функции.


ОперацияОписание
Функции
Abs (X)Модуль числа X
Chr (B)Возвращает символ по его коду B
Hi (W)Возвращает старший байт аргумента W
Lo (W)Возвращает младший байт аргумента W
Odd (L)Возвращает «TRUE», если аргумент W нечетный
Random (W)Возвращает целое случайное число от 0 до W-1
Sqr (X)Возвращает квадрат аргумента W
Sqrt (X)Возвращает квадратный корень аргумента W
Х Div YВозвращает целую часть частного деления Х на Y Х
Х Mod YВозвращает остаток частного деления Х на Y
Процедуры
RandomizeИнициализирует генератор случайных чисел
Swap (W)Меняет местами байты в слове W
Dec (X)Уменьшает значение переменной X на единицу
Inc (X)Увеличивает значение переменной X на единицу
Примечание: X-любой из целых типов, B-байт и т.д.

Табл. 2. Процедуры и функции для целых типов

 

Рассмотрим на примере перечисляемые типы.

Type TMonth=(Jan, Feb, Mar);

Var Month: tMonth;

Begin

      If Month=Feb then label1. Caption: =’февраль’;

      If Rred (Feb)=Jan then showmessage (‘Перед февралем идет январь, и это правильно.’);

     If Succ (Feb)=Mar then showmessage (‘После февраля идет март, и это верно!’);

End;

Type TMonth=(Jan, Feb, Mar);

Var month: tMonth; c: byte;

Begin

    For month := Jan to Mar do showmessage(inttostr(byte(month)));

    For month := Jan to Mar do showmessage(inttostr(ord(month)));

    For c := byte(Jan) to byte(Mar) do showmessage(inttostr(c));

End;

Рассмотрим на примере логические и символьные типы.

Var L: Boolean; { Описываем логический тип }

       C: Char; { Описываем символьный тип }

Begin

       L: = true; C: =’ %‘;

       If chr(C)>12 then C:=’$’;

       C:=chr(ord(C));

       L:=true;

       If not L then exit;

End;

5. Рассмотрим на примере ограниченный тип.

Var date: 1..31; digit:’0’..’9’;

        Month: 1..12;

Var c: byte; s: char;

Begin

   For c: =Low(date) to High(date) do showmessage(inttostr(c));

   For s: =Low(digit) to High(digit) do showmessage(s);

End;

Рассмотрим вещественные типы и стандартные функции для них.


ТипРанг значенийКол-во значащих цифрРазмер в байтах
Real5.0 x 10^–324 .. 1.7 x 10^30815–168
Single1.5 x 10^–45 .. 3.4 x 10^387–84
Real482.9 x 10^–39 .. 1.7 x 10^3811–126
Double5.0 x 10^–324 .. 1.7 x 10^30815–168
Extended3.6 x 10^–4951 .. 1.1 x 10^493219–2010
Comp–2^63+1 .. 2^63 –1 (только целые)19–208
Currency–922337203685477.5808 .. 922337203685477.5807 (четыре знака п.з.)19–208

Табл. 3. Вещественные типы


ФункцияВозвращаемое значение
Abs (x) Абсолютная величина х
Cos (х)Косинус х (х выражается в радианах, а не в градусах)
Sin(x) Синус х
Frac(x)Дробная часть х (откидывается запитая и цифры перед ней)
Int (х)Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т.е. просто устанавливает нуль в дробной части
Тrunc (х)Целая часть х. В отличие от Int, возвращающей действительное значение, Trunc возвращает целое значение
Ехр (х) Экспоненциальная функция от х
Ln (х) Натуральный логарифм от х
АгсТаn (х) Арктангенс х
Pi Число Пи (3.1416…)
Round (х) Ближайшее к х целое значение. Возвращает значение целого типа
Sqr(x)Квадрат х, т.е. X*X
Sqrt (х)Квадратный корень от х

Табл. 4. Функции действительных типов

6. Рассмотрим строковые типы.

Var

        Sss: String[150]; // Короткая строка до 150 символов (максимум 255 символов)

        SsMax: ShortString ; // Короткая строка до 255 символов

        Str: String; // Длинная строка неограниченной длины

Begin

  Sss := ‘строка символов’;

  Sss [6] := ‘и’; // получится ‘строки символов’;

  SsMax := ‘12345’;

  Str:=Sss;

  If length (Str) > 3 then Str:= Str + SsMax;

End;


ФункцияОписание
Процедуры
Delete (s, pos, len)Удаляет максимум len символов из строки s, начиная с позиции pos
Insert (sourse, tar-get, pos)Вставляет строку source в строковую переменную target, начиная с позиции pos
SetLength (s, newlen)Задает новую динамическую длину newlen строковой переменной s
Str (x, s)Преобразует численное значение х в строковую переменную s
Val (s, v, code)Преобразует строку s в соответствующее численное представление v

Рейтинг@Mail.ru