- •Оглавление
- •Часть 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.10. Файлы
2.10.1. Основные свойства файлов
Файл - это тип данных, состоящий из последовательности произвольного количества элементов одного типа. Количество элементов может меняться в ходе работы программы.
Файл предназначен для сохранения данных на устройствах внешней памяти, прежде всего на магнитных дисках, с возможностью их последующего использования.
Следует различать файл операционной системы и файл, как тип данных Паскаля. Эти понятия различны, хотя между ними устанавливается связь в ходе работы программы.
В Паскале имеется два вида файлов: последовательного и произвольного доступа.
В последовательные файлы можно записывать элементы только один за другим и считывать их только в том порядке, в каком они были записаны.
В файлах произвольного доступа можно обратиться к любому элементу по его порядковому номеру, считать данные из этого элемента, записать новые данные на место старых, а также добавить новые элементы в конец файла.
В Турбо-Паскале все файлы произвольного доступа (другое название — типизированными файлы), за исключением текстовых файлов, которые являются последовательными.
Программа может обрабатывать существующий файл или создать новый файл. В любом случае работа с файлом складывается из трех пунктов:
открытие файла;
чтение или запись данных;
закрытие файла.
2.10.2. Типизированные файлы
Элементами типизированных файлов могут быть числа, массивы, записи, но не файлы.
Для использования типизированных файлов вначале нужно определить тип файла в разделе описания типов следующим образом:
TYPE
имя = FILE OF базовый_тип;
где - FILE OF ключевые слова,
имя - имя типа файла,
базовый_тип - тип элементов файла.
Все элементы типизированного файла одного типа, а значит, и одного размера. Именно благодаря этому возможен произвольный доступ к элементам типизированного файла, так как по номеру элемента однозначно определяется его местоположение на магнитном диске. Нумеруются элементы файла целыми числами, начиная с нуля.
Затем нужно объявить файловую переменную определенного файлового типа.
VAR
имя_переменной:имя_файлового_типа;
Для того чтобы получить доступ к файлу на диске, его необходимо связать с файловой переменной при помощи стандартной процедуры ASSIGN.
ASSIGN (файловая переменная, имя файла),
где имя файла — строка, содержащая дисковое имя файла.
Больше нигде в программе не появится имя файла, всюду его заменит файловая переменная.
Затем файл необходимо открыть. Имеются две процедуры открытия файла:
RESET (файловая_переменная);
и
REWRITE (файловая_переменная);
При использовании процедуры RESET файл на диске должен существовать, в противном случае, возникает ошибка.
Содержимое файла при открытии не меняется, данные можно читать из файла, записывать в файл.
При использовании процедуры REWRITE вначале содержимое существующего файла уничтожается и файл становится пустым. Если же файла не существовало, он создается (также являясь пустым). В файл можно добавлять элементы, а также считывать ранее добавленные и записывать в них новые данные.
После открытия файл готов для чтения и записи.
Для открытого файла существует понятие текущего указателя. Это номер элемента файла (считая от нуля), с которым выполняется чтение или запись.
При открытии файла текущий указатель устанавливается на начало файла, то есть на нулевой элемент.
Чтение из типизированного файла выполняется процедурой
READ (файловая_переменная, список переменных),
запись — процедурой
WRITE (файловая_переменная, список выражений),
где переменные и выражения должны быть базового типа.
Запись и чтение из типизированных файлов выполняются без преобразования данных
Процедура SEEK устанавливает текущий указатель файла на элемент, номер которого является вторым параметром. Именно этот элемент будет считан или записан при очередном вводе или выводе.
SEEK (файловая_переменная, номер_элемента: longint)
Текущее положение указателя файла возвращается функцией
FilePos (файловая_переменная): longint;
а общее количество записей — функцией
FileSize (файловая_переменная) : longint;
Функция
EOF (файловая_переменная) :boolean;
возвращает TRUE, когда достигнут конец файла и FALSE в других случаях.
Процедура
CLOSE (файловая_переменная);
закрывает файл.
При этом все изменения окончательно сохраняются на диске, после чего связь между файловой переменной и самим файлом заканчивается.
Пример. Работа с типизированным файлом.
program work_file; var
f: file of real;
R: real;
I: integer; s: string;
begin
readln(s); {ввести имя файла)
assign (f, s);
rewrite (f); {создать новый файл } {сохранить вещественные числа в типизированном файле}
for i:= I to 5 do
begin
readln (R); write (f,R);
end;
{записать последнее число на место первого}
seek (£, fileSize(f) - 1);
read (f, R);
seek(f,0);
write (f, R);
{дописать в файл число 5.5}
seek (f, fileSize (f));
R:= 5.5;
write (f, R);
close (f); {закрыть файл}
{вывести содержимое файла на экран}
reset (f);
while not eof(f) do
begin
read (f,R); writeln (R);
end {while};
{закрыть файл}
close (f);
end.