- •Средства визуального программирования
- •090105 «Комплексное обеспечение информационной безопасности
- •Ставрополь, 2010 Содержание
- •Введение
- •Задачи дисциплины – дать основы:
- •В результате изучения дисциплины студенты должны
- •1.1. Версия 1
- •1.2. Версия 2
- •1.3. Версия 3
- •1.4. Версия 4
- •1.5. Версия 5
- •1.6. Версия 6
- •2.1. Главное окно
- •2.2. Окно формы
- •2.3. Окно дерева объектов
- •2.4. Окно инспектора объектов
- •2.5. Окно кода программы
- •3.1. Пустая форма и ее модификация
- •3.2. Размещение нового компонента
- •3.3. Реакция на события
- •3.4. Некоторые итоги
- •4.1. Страница standard
- •4.2. Страница additional
- •4.3. Страница win32
- •4.4. Страница system
- •4.5. Страница dialogs
- •4.6. Страница win31
- •4.7. Страница samples
- •4.8. Компоненты для работы с базами данных
- •4.9. Компоненты для доступа к интернет
- •4.10. Доступ к серверам автоматизации
- •5.1. Учебная программа
- •5.2. Структура программ delphi
- •5.3. Типы
- •5.4. Операторы языка
- •5.5. Массивы
- •5.6. Процедуры и функции
- •6.1. Алфавит
- •6.2. Идентификаторы
- •6.3. Константы
- •6.4. Выражения
- •6.5. Операции
- •7.1. Простые типы
- •7.2. Структурированные типы
- •7.3. Строки
- •7.4. Указатели и динамическая память
- •7.5. Псевдонимы типов
- •8.1. Локализация имен
- •8.2. Описание подпрограммы
- •8.3. Параметры-массивы и параметры-строки
- •8.4. Процедурные типы
- •8.5. Рекурсия и опережающее описание
- •9.1. Основные понятия
- •9.2. Составляющие класса
- •9.3. Объявление класса
- •9.4. Интерфейсы
- •10.1. Основные свойства варианта
- •10.2. Преобразование вариантов к данным других типов
- •10.3. Подпрограммы для работы с вариантами
- •10.4. Вариантные массивы
- •10.5. Пользовательские варианты
- •11.1. Доступ к файлам
- •11.2. Процедуры и функции для работы с файлами
- •11.3. Текстовые файлы
- •11.4. Типизированные файлы
- •11.5. Нетипизированные файлы
- •11.6. Средства windows для работы с файлами
- •11.7. Отображение файлов в память
- •11.7.1. Создание/открытие файла
- •11.8. Объектная модель работы с файлами
- •12.1. Структура модулей
- •12.2. Заголовок модуля и связь модулей друг с другом
- •12.3. Интерфейсная часть
- •12.4. Исполняемая часть
- •12.5. Инициирующая и завершающая части
- •12.6. Доступ к объявленным в модуле объектам
- •12.7. Типы модулей в delphi
- •13.1. Назначение
- •13.2. Реализация
- •13.3. Пример
- •13.4. Использование
- •13.5. Включение в библиотеку форм
- •15.1. Константы простых типов и типа string
- •15.2. Константы-массивы
- •15.3. Константы-записи
- •15.4. Константы-множества
- •15.5. Константы-указатели
- •15.6. Инициация переменных
- •16.1. Класс exception - обработка исключений
- •16.2. Класс tlist - списки
- •16.3. Классы tstrings и tstringlist -наборы строк и объектов
- •16.4. Графический инструментарий
- •Список используемой литературы
12.5. Инициирующая и завершающая части
Инициирующая и завершающая части чаще всего отсутствуют
Вместе с начинающим их словами initialization и finalization.
В инициирующей части размещаются операторы, которые исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут инициироваться переменные, открываться нужные файлы и т. д. В завершающей части указываются операторы, выполняющиеся после завершения работы основной программы (в них освобождаются выделенные программе ресурсы, закрываются файлы и т. д.). Если несколько модулей содержат инициирующие части, эти части выполняются последовательно друг за другом в порядке перечисления модулей в предложении uses главной программы. Если несколько модулей содержат завершающие части, эти части выполняются последовательно друг за другом в порядке, обратном перечислению модулей в предложении uses главной программы.
12.6. Доступ к объявленным в модуле объектам
Пусть, например, мы создаем модуль, реализующий арифметику комплексных чисел (такая арифметика ни в стандартном Паскале, ни в Object Pascal не предусмотрена, но в Delphi 6 введен пользовательский вариант, который реализует действия над комплексными
Числами - см. п. 10.5 и модуль Source\Rtl\Common\VarCmplx.pas Каталога размещения Delphi). Арифметика комплексных чисел реализуется четырьмя функциями:
Unit Cmplx;
//---------------------------
Interface
//---------------------------
type
Complex = record
re,im: real end; Function AddC (x,y: Complex): Complex;
Function SubC (x,y: Complex): Complex;
Function MuiC (x,y: Complex): Complex;
Function DivC (x,y: Complex): Complex;
const
с : Complex = (re : 0.1; im : -1);
//---------------------------
Implementation
//---------------------------
Function AddC (x,y: Complex): Complex;
// Сложение комплексных чисел
begin
Result.re := x.re + y.re;
Result.im := x.im + y.im
end; //AddC
Function SubC (x,y: Complex): Complex;
// Вычитание комплексных чисел
begin
Result.re := x.re - y.re;
Result.im := x.im - y.im
end; //SubC
Function MulC (x,y: Complex): Complex;
// Умножение комплексных чисел
begin
Result.re := x.re * y.re - x.im * y.im;
Result.im := x.re * y.im + x.im * y.re
end; //MulC
Function DivC (x,y: Complex): Complex;
// Деление комплексных чисел
var
z: Real;
begin
z := sqr(y.re) + sqr(y.im);
// Защищаем программу от краха в случае, когда z=0:
try-Result, re := (x.re * у.re + x.im * y.im) / z;
Result.im := (x.re * y.im - x.im * y.re) / z;
except
Result.re := l.le309;
Result.im := l.le309;
end
end
{Div.C};
end.
Чтобы создать такой модуль, следует вызвать опцию File | New I unit[В Delphi 1 для этого используется опция File | New | Unit, в версиях 2...5 - опция File |
New и выбор пиктограммы на закладке New окна Репозитория.]. Текст модуля следует сохранить в файле cmplx.pas: имя файла должно совпадать с именем модуля - только в этом случае Delphi сможет автоматически найти модуль и следить за его обновлением.
После создания модуля его имя нужно упомянуть в предложении uses того модуля, в котором будут использоваться вновь созданные подпрограммы, типы, константы (в нашем модуле - тип complex, подпрограммы Addc, subc. Mule, Dive и константа с). Пусть, например, при каждом щелчке по кнопке bbRun учебной программы создается пара случайных комплексных чисел, над которыми осуществляются все четыре арифметических действия. Тогда обработчик bbRunClick мог бы быть таким:
implementation
uses Cmplx;
{$R *.DFM}
procedure Tform1.bbRunClick(Sender: TObject);
var
x,y,z: Complex;
procedure Output(Operation: Char);
//Осуществляет нужное действие и выводит результат в mmOutput
var
S: String;
begin
case Operation of
'+': z := AddC(x,y) ;
'-': z := SubC(x,y) ;
'*': z := MulC(x,y) ;
'/': z := DivC(x,y) ;
end;
S := '('+FormatFloat('+0.0000;-0.0000',x.re)+
FormatFloat('+O.OOOOj;-O.OOOOj',x.im)+')'
+0peration+ '('+ FormatFloat('+0.0000;-0.0000',у.re)+ FormatFloat('+0.OOOOj;-0.OOOOj',у.im)+'='+ FormatFloat('+0.0000;-0.0000',z.re)+ FormatFloat('+0.OOOOj;-0.OOOOj',x.im);
mmOutput.Lines.Add(S) ;
end; //Output
begin //bbRunClick
x.re := Random;
x.im := Random;
y.re := Random;
y.im := Random;
Output('+');
Output('-');
Output ('*');
Output ('/');
mmOutput.Lines.Add('');
end;
Обратите внимание на ссылку uses cmpix в самом начале исполняемой части - именно она делает доступными обработчику bbRunClick объекты модуля Cmplx. Эту ссылку можно вставить с помощью среды Delphi: выберите опцию File | Use Unit и в появившемся окне щелкните по имени модуля Сmplx.