- •Оглавление
- •Часть 1. Краткое описание Delphi 8
- •Часть 2. Технология ado для баз данных access 186
- •9.1. Общие сведения 289
- •Введение
- •Часть 1. Краткое описание Delphi
- •1. Работа со средой delphi
- •1.1. Ознакомление с delphi
- •1.2. Вкладка дизайнера формы (design)
- •1.3. Вкладка редактора кода программы
- •1.4. Окно object inspector
- •1.5. Окно project manager
- •1.6. Окно палитры инструментов
- •1.7. Создание первого проекта приложения
- •1.8. Сохранение проекта
- •1.8. Сохранение проекта
- •1.9. Компиляция
- •2. Основа языка delphi
- •2.1. Основные понятия языка
- •2.1.1. Элементы языка
- •2.1.2. Пример простой программы
- •2.1.3. Типы данных
- •2.1.4. Операции и выражения
- •2.1.5. Стандартные функции
- •2.1.6. Ввод и вывод на дисплей
- •2.1.7. Оператор присваивания
- •2.2. Операторы языка паскаль
- •2.2.1. Составной оператор
- •2.2.2. Условный оператор
- •2.2.3. Сложные условия
- •2.2.4. Оператор выбора case
- •2.2.5. Оператор цикла for
- •2.2.6. Оператор цикла while
- •2.2.7. Оператор цикла repeat
- •2.2.8. Вложенные циклы
- •2.2.9. Прочие операторы
- •2.3. Общая структура программы
- •2.3.1. Перечень разделов программы
- •2.4. Массивы
- •2.4.1. Одномерные массивы
- •2.4.2. Сортировка массивов и поиск элемента в массиве
- •2.4.3. Многомерные массивы
- •2.5. Функции и процедуры
- •2.5.1. Описание функций
- •2.5.2. Обращение к функции
- •2.5.3. Процедуры
- •2.5.4. Параметры-значения и параметры-переменные
- •2.5.5. Локальные и глобальные переменные
- •2.5.6. Pекурсия
- •2.6. Строки символов
- •2.6.1. Задание строк
- •Var имя: string[длина];
- •2.6.2. Функции и процедуры для обработки строк
- •2.7. Порядковые типы данных
- •2.7.1. Перечисляемый тип данных
- •2.7.2. Интервальный тип данных
- •2.7.3. Порядковые типы данных
- •2.7.4. Дополнение:тип данных tDateTime (дата-время)
- •2.8. Множества
- •2.8.1. Значения типа множество
- •2.8.2. Операции на множествах
- •2.9. Записи
- •2.9.1. Поля записи
- •2.9.2. Оператор with
- •2.9.3. Последовательный поиск в массиве записей
- •2.9.4. Двоичный поиск в массиве записей
- •2.10. Файлы
- •2.10.1. Основные свойства файлов
- •2.10.2. Типизированные файлы
- •2.10.3. Текстовые файлы
- •2.10.4. Поиск файлов
- •2.11. Динамическая память
- •2.11.1. Динамические переменные и указатели
- •2.11.2. Динамические списки
- •2.11.3. Деревья
- •2.12. Программные модули
- •2.12.1. Модули, формируемые пользователем
- •2.12.2. Стандартные модули
- •2.12.3. Примеры программ
- •3. Главная форма
- •3.1. Свойства главной формы
- •3.2. События главной формы
- •4. Описание некоторых компонентов
- •4.1. Компонент tpanel (панели)
- •4.2. Компонент tbutton (кнопка)
- •4.3. Дополнительные кнопки
- •4.4. Компонент tlabel (надписи)
- •4.5. Компонент tedit (Строки ввода)
- •4.6. Компонент тМето (многостроч. Поле ввода)
- •4.7. Свойства и методы класса tstrings
- •4.8. Компонент checkbox (флажок)
- •4.9. Компонент tradiobutton (кнопки выбора)
- •4.10. Компонент MainMenu (главное меню программы)
- •4.11. Компонент timage
- •4.12. Компонент tstringgrid (сетка)
- •4.13. Компонент ttimer(таймер)
- •5. Отладка программ
- •5.1. Типы ошибок
- •5.2. Отладка программы
- •5.2.1. Трассировка программы
- •5.2.2. Точки останова программы
- •5.2.3. Наблюдение значений переменных
- •Часть 2. Технология ado для баз данных access
- •6. Создание баз данных access
- •6.1. Определение понятия баз данных
- •6.2. Интерфейс программы access
- •6.3. Создание базы данных в access 2007
- •6.3.1. Создание двухтабличной базы данных
- •6.3.2. Создание базы данных с вычисляемыми полями
- •6.4. Выбop формата для новой базы данных
- •6.5. Создание пустой базы данных
- •6.6. Открытие и закрытие базы данных
- •6.7. Создание таблиц в режиме конструктора
- •6.7.1. Выбор первичного ключа
- •6.7.2. Изменение полей и таблиц
- •6.7.3. Копирование полей
- •6.7.4. Перемещение полей
- •6.7.5. Удаление полей
- •6.7.6. Операции с таблицами
- •6.8. Создание базы данных в access 2003
- •6.9. Установление связей между таблицами
- •6.10. Обеспечение целостности записей в базе данных
- •6.11. Редактирование и удаление связей
- •7. Система доступа к данным ado
- •7.1. Общие сведения
- •7.2. Компонент adoConnection
- •7.2.1. Свойства компонента adoConnection.
- •7.2.2. Методы компонента adoConnection
- •7.3.Компонент аdоТable
- •7.3.1. Свойства компонента tadoTable
- •7.3.2. Методы компонента tadoTable
- •7.4. Компонент adoQuery
- •7.5. Компонент adoDataSet
- •7.5.1.Свойства компонента adoDataSet
- •7.5.2. Методы компонента adoDataSet
- •7.5.3. Cобытия компонента adoDataSet
- •7.6. Компонент DataSource
- •7.7.Комнонент DataGrid
- •7.7.1 Cвойства компонента DataGrid
- •7.7.2. Методы и события компонента DataGrid
- •7.8. Компонент adocommand
- •8. Управление базами данных
- •8.1. Приложение для управления базами данных
- •8.2. Свойства полей базы данных
- •8.3. Редактирование базы данных
- •8.4. Сортировка данных
- •8.5. Поиск данных в базе
- •8.5.1. Фильтрация данных в базе
- •8.5.2. Нахождения информации методом Locate
- •9.1. Общие сведения
- •9.2. Основные операторы запроса
- •9.2.1. Агрегатные функции
- •9.2.2. Подзапросы
- •9.3. Операторы наполнения баз данных sql
- •9.3.1. Ввод значений
- •9.3.2. Удаление значений
- •9.3.3. Изменение значений
- •9.4. Операторы создания баз данных sql
- •9.4.1. Команда создания таблицы.
- •9.4.2. Первичные ключи таблицы
- •9.4.3. Индексы таблицы
- •9.4.4. Добавление в таблицу новых столбцов
- •10. Реализация sql- запросов
- •10.1. Компонент tadoQuery для sql- запросов
- •10.2. Форма для реализация sql-запроса
- •11. Генератор отчетов Quick Reports
- •11.1.Описание Quick Reports
- •11.2. Печать записи с помощью Quick Reports
- •11.3. Печать таблиц с помощью Quick Reports
- •394026 Воронеж, Московский просп., 14
2.4. Массивы
2.4.1. Одномерные массивы
Массив - это тип данных, объединяющий фиксированное число элементов данных одного и того же типа, называемого базовым типом.
Каждый элемент массива имеет свой индекс (номер), который используется для доступа к этому элементу. Поэтому можно выделить любой элемент массива и обращаться с ним, как с переменной базового типа.
Массив описывается в разделе описания типов следующим образом:
TYPE
имя =Array [мин_значение_индекса.. макс_значение_индекса] OF базовый тип;
где ARRAY, OF - ключевые слова, имя - имя типа,
мин_значение_индекса , макс_значение_индекса - константы целого типа, указывающие диапазон изменения индекса.
Затем нужно объявить переменные типа массив.
VAR имя_переменной_массива:тип_массива;
Для сокращения записи допускается объединять эти два описания в одно:
VAR имя_переменной_массива:
ARRAY [мин_значение_индекса.. макс_значение_индекса] OF базовый тип;
Отдельный элемент массива записывается в виде: имя_переменной_массива[индекс]
где индекс - константа, переменная или выражение целого типа, значение которого лежит в диапазоне от мин_значение_индекса до макс_значение_индекса.
В дальнейшем термин массив будем использовать в двух различных смыслах (не оговаривая этого особо, за исключением случаев, когда может возникнуть путаница): для обозначения типа и для обозначения переменной этого типа. Такая же ситуация будет и для слов, обозначающих другие типы данных.
Одномерный массив — это массив, базовым типом которого является скалярный тип. Другими словами, одномерный массив составлен из элементов скалярного типа. Другое название одномерного массива- вектор.
Количество элементов массива называют длиной или размером массива (не путать с размерностью массива, о которой далее).
Например, описание
type mas = array [0..99] of real;
var X: mas;
задает массив (тип массива) из 100 действительных чисел и переменную X типа массив. Х[0] означает самый первый элемент массива, Х[1] — следующий за ним и т.д. При этом к Х[0],Х[1],..., Х[99] нужно относиться как к отдельным переменным базового типа, в данном случае real.
В качестве индекса можно использовать любое выражение со значениями из отрезка 0..99.
Описание
var Y: array [-100..-1] of integer;
задает массив из 100 целых чисел. Х[-100] означает самый первый элемент массива, Х[-99] — следующий за ним и т.д.
Массиву можно присвоить значение другого массива того же типа. Этим исчерпываются допустимые операции над массивом как единым целым.
Арифметические действия, ввод и вывод нужно выполнять над отдельными элементами массива. Элемент массива выделяется конкретным значением индекса.
Пример. Ввод значений в массив Ml, присвоение их массиву М2 и вывод.
program massiv;
type masl = array [1..10] of integer;
var
Ml, M2: masl;
i: integer;
begin
i:=0;
repeat
i:=i+l;
read (Ml[i])
until i= 10;
M2:=M1;
for i:=l to 10 do
writeln(Ml[i],' ', M2[i]); end.
Пример. Найти наибольший элемент в заданном массиве.
program maximum; const N=100;
type masl=array[l.. N] of real;
var a:masl; x:real; i, imax:integer; begin
for i:=l to N do read(a[i]); (*ввод элементов массива*)
max:=a[l]; imax:=l;
for i:=l to N do
if a[i]>max then
begin
max:=a[i]; (*найденный наибольший элемент*) imax:=i; (*индекс найденного наибольшего элемента *)
end;
Writeln('наибольший элемент ', max, ' в позиции ',imax); end.
Пример. По введенной дате определить номер дня в году (для не високосного года)
program day_in_year;
type masl = array[1..12] of integer;
var number_day:masl;
date,day,month,i: integer; begin
(* Количество дней в месяцах*)
number_day[1] :=31; (*январь*)
number_day[2]:=28; (*февраль*)
number_day[3] :=31; (*март*)
number_day[4]:=30; (*апрель*)
number_day[5] :=31; (*май*)
number_day[6]:=30; (*июнь*)
number_day[7]:=31; (*июль*)
number_day[8] :=31; (*август*)
number_day[9]:=30; (*сентябрь*)
number_day[10]:=31; (*октябрь*)
number_day[ll]:=30; (*ноябрь*)
number_day[12]:=31; (*декаръ*)
write('Введите дату и номер месяца ');
read(date, month);
day:=0;
for i:=l to month - 1 do
day:=day+number_day[i]; day:=day+date;
writeln('Hoмep дня в году ',day); end.
Пример. Перевести положительное целое число из десятичной системы счисления в двоичную.
program dec_in_bit;
const max_bit=16; (*Максимальное количество двоичных*) (* разрядов в числе*)
var bits:array[l..max_bit] of integer; (*Массив для хранения*) (*двоичной формы числа*)
n,k,i:integer;
begin
write('Введите число '); read(n);
for k:=l to max_bit do bits[k]:=0; нижеi:=0;
repeat i:=i+l;
bits[i]:=n mod 2;
n := n div 2;
until n=0;
write('Число в двоичной форме '); for k:=i downto 1 do write(bits[k]); writeln;
end.