- •Средства визуального программирования
- •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. Графический инструментарий
- •Список используемой литературы
15.1. Константы простых типов и типа string
Объявление таких констант обычно не вызывает трудностей, так как в качестве их значения используются нетипизированные константы или их идентификаторы.
Примеры объявлений:
type
colors = (white, red, black);
{ ----- Правильные объявления: ----- } const
CurrCol colors = red;
Name String = 'Вирт H.' ;
Year Word = 1989;
X Real = 0.1;
Min Integer =0;
Max Integer = 10;
Days 1..31 = 1;
Answer Char = 'Y';
{----- Неправильные объявления: ----- }
Mass : array [Min..Max] of Real;
{Нельзя использовать типизированные константы в качестве границ диапазона} a,b,c : Byte =0;
{Нельзя использовать список идентификаторов}
15.2. Константы-массивы
В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки, например:
type
colors = (white, red, black) ;
const
ColStr : array [colors] of String [5] =('white', 'red', 'blak');
Vector : array [1..5] of Byte = (0,0,0,0,0);
При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Object Pascal хранятся в упакованном формате, поэтому в качестве значения массива-константы типа char допускается задание символьной строки соответствующей длины. Два следующих объявления идентичны:
const
Digit : array [0..9] of Char =
('0', '1', '2', ' 3 ', ' 4'•, '5', '6', '7', '8', '9');
DigChr: array [0..9] of Char = '0123456789';
При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать количеству измерений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива.
Следующая программа выведет в компонент mmoutput три строки с монотонно увеличивающимися целыми числами:
Procedure TfmExample.bbRunClick(Sender: TObject);
var
i, j, k, 1 : Byte;
S: String;
const
Matr : array [1..3, 1..5] of Byte =
((0, 1, 2, 3, 4), (5, 6, 7, 8, 9), (10,11,12,13,14));
Cube : array [0..1, 0..1, 0..2] of Integer =
(((О ,1 ,2 ),(3 ,4 ,5 )), ((6 ,7 ,8 ),(9 ,10,11)));
Mas4 : array [0..1, 0..1, 0..1, 0..1] of Word =
((((О ,1 ),(2 ,3 )),
((4 ,5 ), (6 ,7 ))), (((8 ,9 ), (10,11)), ((12,13), (14,15))));
begin
S:=' ';
for i := I to 3 do for j := 1 to 5 do
S := S + IntToStr(Matr[i,j])+' ';
mmOutput.Lines.Add(S);
S: = '';
for i := 0 to 1 do for j := 0 to 1 do
for k := 0 to 2 do
S := S + IntToStr(Matr[i,j,k]) +' ';
mmOutput.Lines.Add(S);
S:=''; for i := 0 to 1 do
for j := 0 to 1 do
for k := 0 to 1 do
for l := 0 to 1 do
S := S + IntToStr(mas4[i,j,k,l]:3);
mmOutput.Lines.Add(S) ;
end;
Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению.
15.3. Константы-записи
Определение константы-записи имеет следующий вид:
<идентификатор> : <тип> = (<сп.знач.полей>)
Здесь <идентификатор> - идентификатор константы; <тип> - тип записи; <сп. знач. полей> - список значений полей.
Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга двоеточиями, например:
type
Point = record
X, Y : Real end;
Vect = array [0..1] of Point;
Month = (Jan, Feb, Mar, Apr, May, Jun, Jly, Aug, Sep, Oct, Nov, Dec) ;
Date = record
D : 1..31;
M : month;
Y : 1900..1999 end;
const
Origon : Point = (X : 0; Y : -1) ;
Line : Vector =
((X : -3.1; Y : 1.5), (X : 5.9; Y : 3.0));
SomeDay : Date = (D : 16; M : May; Y : 1997);
Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы
одно поле файлового типа, такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например:
type
Forma = record
case Boolean of
True : (Birthplace : String [40]);
False : (Country : String [20];
EntryPort : String [20];
EntryDate : array [1..3] of Word;
Count : Word) end;
const
Percon1 : Forma = (Country : 'Норвегия';
EntryPort : 'Мурманск';
EntryDate : (16, 3, 89);
Count : 12);
Percon2 : Forma = (Birthplace : 'Москва');