- •Рецензенты:
- •Ответственные за выпуск:
- •Введение 12 Глава 1. Язык программирования Delphi 16
- •Глава 2. Среда разработки Delphi 81
- •Глава 3. Работа с базами данных 136
- •Глава 4. Взаимодействие приложений 199
- •Глава 5. Дополнительные возможности 222
- •Глава 8. Лабораторный практикум 283
- •Приложения 320
- •Библиографический список 351
- •Введение
- •Лабораторные работы
- •Глава 1. Язык программирования Delphi
- •1.1. Типы данных
- •1.1.1. Константы
- •1.1.2. Переменные
- •1.1.3. Простые типы данных
- •1.1.3.1. Целые типы
- •1.1.3.2. Вещественные типы
- •1.1.3.3. Логические типы
- •1.1.3.4. Символьные типы
- •1.1.3.5. Тип дата ‑ время (tDateTime)
- •1.1.3.6. Перечисляемые типы
- •1.1.3.7. Интервальные типы
- •1.1.3.8. Порядковые типы
- •1.1.4. Структурированные типы данных
- •1.1.4.1. Статические массивы
- •1.1.4.2. Динамические массивы
- •1.1.4.3. Записи
- •1.1.4.4. Множества
- •1.1.5. Типы строк
- •1.1.6. Универсальные типы - Variant
- •1.1.7. Массивы типа Variant
- •1.1.8. Указатели
- •1.1.9. Процедурные типы
- •1.1.10. Процедурные указатели
- •Вопросы для самопроверки и контроля
- •1.2. Операции
- •1.2.1. Арифметические операции
- •1.2.2. Операции присвоения и сравнения
- •1.2.3. Логические операции
- •1.2.4. Логические поразрядные операции
- •1.2.5. Операции со строками
- •1.2.6. Операции над множествами
- •1.2.7. Операции с указателями
- •1.2.8. Порядок вычисления выражений
- •1.2.9. Преобразование типов
- •Вопросы для самопроверки и контроля
- •1.3. Структура и этапы разработки проекта
- •1.3.1. Структура проекта
- •1.3.1.1. Основные типы файлов
- •1.3.1.2. Файлы ресурсов
- •1.3.2. Программа
- •1.3.2.1. Структура программы
- •1.3.2.2. Структура головной программы проекта
- •1.3.3. Подпрограммы
- •1.3.3.1. Типы подпрограмм
- •1.3.3.2. Процедуры и функции, определенные пользователем
- •1.3.4. Модули
- •Interfac e //интерфейсная часть с объявлением типов и процедур
- •Implementation //исполнимая часть с текстами процедур
- •1.3.5. Компилятор
- •1.3.5.1. Общее описание компилятора
- •1.3.5.2. Основные директивы компилятора
- •1.3.5.3. Директивы условной компиляции
- •1.3.6. Этапы разработки проекта
- •1.3.6.1. Разработка интерфейса и программного кода
- •1.3.6.2. Компиляция
- •1.3.6.3. Cборка
- •1.3.6.4. Выполнение
- •1.3.6.5. Выполнение консольного приложения и dos‑программ
- •1.3.7. Отладка
- •1.3.7.1. Максимальный контроль ошибок
- •1.3.7.2. Оптимизация кода программы
- •1.3.7.3. Пошаговое выполнение программы
- •1.3.7.4. Протокол событий
- •1.3.7.5. Просмотр и изменение значений
- •1.3.7.6. Просмотр программного кода
- •1.3.7.7. Отладка внешних процессов
- •1.3.7.8. Отладка в машинных кодах
- •1.3.7.9. Инспектор отладки
- •1.3.8. Редактор кода
- •Вопросы для самопроверки и контроля
- •1.4. Операторы
- •1.4.1. Общие сведения
- •Пример анализа односимвольного ответа пользователя:
- •1.4.8. Операторы цикла
- •1.4.8.1. Счетный цикл For
- •1.4.8.2. Цикл Repeat ‑ Until
- •1.4.8.3. Цикл While
- •1.4.9. Оператор присоединения имени ‑ With
- •1.4.10. Вставка команд ассемблера
- •Вопросы для самопроверки и контроля
- •1.5. Объектно‑ориентированное программирование
- •1.5.1. Определение
- •1.5.2. Объявление класса и объекта
- •1.5.3. Динамическое создание и удаление объекта
- •1.5.4. Динамическое конструирование объектов
- •1.5.5. Свойства
- •1.5.6. Методы
- •1.5.7. Конструкторы и деструкторы
- •1.5.8. События
- •Вопросы для самопроверки и контроля
- •1.6. Обработка исключительных ситуаций
- •1.6.1. Исключения
- •1.6.2. Иерархия классов исключений
- •1.6.3. Свойства и конструкторы исключений
- •1.6.4. Блок зачистки Try ‑ Finally ‑ End
- •1.6.5. Зачистка в разделе модуля Finalization
- •1.6.6. Блок обработки исключений Try ‑ Except ‑ End
- •1.6.7. Искусственная генерация исключений
- •1.6.8. Исключения eAbort и функция Abort
- •1.6.9. Создание нового типа исключения
- •1.7.2.2. Функция форматирования Format
- •1.7.3. Преобразование дат и времени
- •1.7.4. Обработка строк с нулевым символом в конце
- •1.7.5. Обработка строк без нулевого символа в конце
- •1.7.6. Диалоговые окна ввода и вывода сообщений
- •1.7.7. Воспроизведение звуков
- •1.7.8. Запуск из приложения внешних программ
- •1.7.9. Специальные процедуры и функции
- •1.7.10. Сообщения Windows
- •Вопросы для самопроверки и контроля
- •1.8. Файлы
- •1.8.1. Типы файлов
- •1.8.2. Файлы Паскаля
- •1.8.2.1. Любые файлы
- •1.8.2.2. Типизированные файлы
- •1.8.2.3. Текстовые файлы
- •1.8.2.4. Печать текста
- •1.8.2.5. Нетипизированные файлы
- •1.8.3. Объектный подход к файлам
- •1.8.4. Файлы Windows
- •1.8.5. Обслуживание внешних файлов и каталогов
- •Вопросы для самопроверки и контроля
- •1.9. Динамические структуры данных
- •1.9.1. Общие сведения
- •1.9.2. Процедуры и функции динамического распределения памяти
- •1.9.3. Формирование стека
- •1.9.4. Формирование очереди
- •Р ис. 2.1.1.1. Окна среды разработки приложений
- •2.1.2. Панели компонентов и их настройка
- •2.1.3. Архив объектов (репозиторий)
- •2.1.4. Справочная система
- •2.1.5. Характеристика компонентов
- •2.1.6. Размещение и настройка компонентов на форме
- •2.1.7. Свойства
- •2.1.7.1. Имя объекта
- •2.1.7.2. Внешний вид объекта
- •2.1.7.3. Размеры объекта
- •2.1.7.4. Местоположение объекта
- •2.1.7.5. Перемещение объекта
- •2.1.7.6. Доступ к объекту
- •2.1.7.7. Значение объекта
- •2.1.7.8. Меню
- •2.1.7.9. Вид указателя мыши
- •2.1.7.10. Справочная система
- •2.1.7.11. Наследование родительских свойств
- •2.1.8. События
- •2.1.8.1. Процедуры обработки событий
- •2.1.8.2. Мышь
- •2.1.8.3. Клавиатура
- •2.1.8.4. Перемещение объектов
- •2.1.8.5. Другие события
- •2.1.9. Методы
- •2.2. Глобальные объекты
- •2.2.1. Формы (Form)
- •2.2.1.1. Свойства
- •2.2.1.2. Методы
- •2.2.1.3. События
- •2.2.1.4. Некоторые приемы работы с формами
- •2.2.2. Приложение (Application)
- •2.2.2.1. Свойства
- •2.2.2.2. Методы
- •2.2.2.3. События
- •2.2.3. Экран (Screen)
- •2.2.3.1. Свойства
- •2.2.6. Списки (tList)
- •2.2.6.1. Свойства
- •2.2.6.2. Методы
- •2.2.6.3. Схема создания списка
- •2.2.7.Список строк и объектов (tStringList)
- •2.2.7.1. Свойства
- •2.2.7.2. События
- •2.2.7.3. Методы
- •2.2.8. Графика
- •2.2.8.1. Шрифт (tFont)
- •2.2.8.2. Перо (tPen)
- •2.2.8.3. Кисть (tBrush)
- •2.2.8.4. Канва, ее свойства и графические методы (tCanvas)
- •2.2.8.5. Изображение (tGraphic, tPicture)
- •2.2.8.6. Анимация
- •2.3. Основные компоненты
- •2.3.1. Вывод текста
- •2.3.1.1. Текстовая надпись (Label)
- •2.3.1.2. Статическая текстовая надпись (StaticText)
- •2 .3.1.3. Строка состояния (StatusBar)
- •2.3.2. Ввод и редактирование данных
- •2.3.2.1. Одностроковый текст (Edit)
- •2.3.2.2. Одностроковый текст с маской (MaskEdit)
- •2.3.2.3. Многостроковый текст (Memo)
- •2 .3.2.4. Таблица строк (StringGrid)
- •2 .3.2.5. Рисуемая таблица (DrawGrid)
- •2.3.2.6. Многострочный редактор текста в формате rtf (RichEdit)
- •2.3.2.7. Дата и время (DateTimePicker)
- •2.3.3. Списки
- •2.3.3.1. Простой список (ListBox)
- •2.3.3.2. Комбинированный список (ComboBox)
- •2 .3.4. Командные кнопки
- •2.3.4.1. Стандартная кнопка (Button)
- •2 .3.4.2. Кнопка с рисунком (BitBtn)
- •2.3.4.3. Кнопка быстрого доступа (SpeedButton)
- •2.3.4.4. Независимый переключатель (CheckBox)
- •2.3.4.5. Зависимый переключатель (RadioButton)
- •2 .3.5.3. Группа независимых переключателей (CheckListBox)
- •2 .3.5.4. Панель (Panel)
- •2 .3.5.5. Область прокрутки (ScrollBox)
- •2.3.5.6. Фрейм (Frame)
- •2.3.5.7. Разделители контейнеров (Splitter)
- •2.3.5.8. Прокрутка страниц (PageScroller)
- •2.3.6. Счетчики
- •2.3.6.1. Полоса прокрутки ‑ счетчик (ScrollBar)
- •2 .3.6.2. Ползунок (TrackBar)
- •2.3.6.3. Счетчик (UpDown)
- •2 .3.6.4. Редактируемое поле со счетчиком (SpinEdit)
- •2.3.6.5. Индикаторы процесса выполнения программы (ProgressBar, Gauge)
- •2.3.7. Графика
- •2.3.7.1. Изображение (Image)
- •2.3.7.2. Список изображений (ImageList)
- •2.3.7.3. Геометрическая фигура (Shape)
- •2.3.7.4. Фаска (Bevel)
- •2 .3.7.5. Окно рисования (PaintBox)
- •2.3.7.6. Простая диаграмма (Gauge)
- •2 .3.7.7. Диаграмма (Chart)
- •Р ис. 2.3.7.8. Страницы редактора диаграмм
- •2.3.8. Меню
- •2 .3.8.1. Главное меню (MainMenu)
- •2 .3.8.2. Контекстное меню (PopupMenu)
- •2.3.8.3. Программная настройка меню
- •2.3.8.4. Горячие клавиши (HotKey)
- •2 .3.8.5. Синхронизация объектов (ActionList)
- •2 .3.8.6. События приложения (ApplicationEvents)
- •2.3.9. Структурированные компоненты
- •2.3.9.1. Панели инструментов (ToolBar)
- •2.3.9.2. Панель управления (ControlBar)
- •2.3.9.3. Расширенная панель управления (CoolBar)
- •2 .3.9.4. Набор страниц (PageControl)
- •2 .3.9.5. Переключаемые страницы (TabControl)
- •2 .3.9.6. Список элементов (ListView)
- •2 .3.9.7. Дерево элементов (TreeView)
- •2.3.10. Системные компоненты
- •2.3.10.1. Таймер (Timer)
- •2 .3.10.2. Мультимедийный проигрыватель (MediaPlayer)
- •2 .3.10.3. Анимация avi (Animation)
- •2.3.11. Стандартные диалоги
- •2 .3.11.1. Открытие и сохранение файла (OpenDialog, SaveDialog)
- •2.3.11.2. Открытие и сохранение графического файла (OpenPictureDialog, SavePictureDialog)
- •2.3.11.3. Выбор шрифта (FontDialog)
- •2.3.11.4. Выбор цвета (ColorDialog)
- •2 .3.11.5. Настройка печати (PrintDialog)
- •2 .3.11.6. Настройка принтера (PrinterSetupDialog)
- •2 .3.11.7. Поиск (FindDialog)
- •Глава 3. Работа с базами данных
- •3.1. Основные понятия
- •3.2. Создание базы данных
- •Р ис. 3.2.3. Окна построителей шаблона и индекса
- •3.3. Создание модуля данных
- •3.4. Компоненты доступа к данным (Data Access)
- •3.4.1. Таблица (Table)
- •3.4.2. Источник данных (DataSource)
- •3.4.3. Описание и доступ к полям записи базы данных
- •3.4.4. Компоненты работы с базой (Data Control)
- •3.5. Установка связей между таблицами
- •3.6. Установка полей соответствия (Lookup)
- •3.7. Создание запросов
- •3.7.1. Визуальные средства
- •3.7.2. Командные средства sql
- •3.8. Основные операции с записями
- •3.9. Мастер форм
- •3.10. Формирование отчетов средствами Quick Reports
- •3.10.1. Быстрый отчет (QuickRep)
- •3.10.2. Компоненты отчета
- •3.10.3. Простой отчет
- •3 .10.4. Отчет из нескольких таблиц с группировкой данных и итогами
- •3.10.5. Отчет типа “мастер/детальный”
- •3.10.6. Составной отчет
- •3.11. Формирование отчетов средствами Rave Reports
- •3.11.1. Компоненты отчета
- •3.11.2. Конструктор отчетов
- •3.11.3. Компоненты панели инструментов
- •3.11.4. Отчет из нескольких таблиц с группировкой данных и итогами
- •3.12. Формирование отчетов средствами Fast Reports
- •3.12.1. Компоненты отчета
- •3.12.2. Конструктор отчетов
- •3.12.3. Компоненты панели инструментов
- •3.12.4. Отчет из нескольких таблиц с группировкой данных и итогами
- •3.13. Анализ данных cредствами многомерного куба Decision Cube
- •Р ис. 3.13.3. Страница с текстом команды запроса sql
- •3.14. Клиент‑серверные субд
- •3.15. Доступ к данным по технологии ado
- •Вопросы для самопроверки и контроля
- •Глава 4. Взаимодействие приложений
- •4.1. Создание динамически подключаемых библиотек (dll)
- •4.2. Создание новых компонентов
- •4.3. Создание и установка ActiveX‑элементов
- •4.4. Создание и установка пакетов
- •4.5. Использование пакетов
- •4.6. Технология связывания и внедрения объектов (ole)
- •4.7. Многопоточные приложения
- •4.8. Технология применения объектов com, dcom
- •4.10.2. Создание сервера приложений доступа к базе данных
- •4.10.3. Связь с сервером приложений по протоколу dcom
- •4.10.4. Связь с сервером приложений по протоколу Интернет tcp/ip
- •4.10.5. Связь с сервером приложений по протоколу http
- •4.10.6. Основы разработки приложений Internet
- •Глава 5. Дополнительные возможности
- •5.1. Создание справочной системы
- •Р ис. 5.1.2. Окно созданной справочной системы
- •5.2. Обзор остальных возможностей
- •5.3. Формирование отчетов, диаграмм и анализа данных пакетом Crystal Reports
- •5.4. Работа с Excel
- •5.5. Работа с Word
- •Except application.Messagebox('приложение будет закрыто', 'ошибка!', 0);
- •5.6. Основные отличия новых версий Delphi
- •6.1. Лексические структуры языка
- •6.1.1. Элементы
- •6.1.2. Константы
- •6.1.3. Типы данных
- •Простейшие скалярные стандартные типы
- •6.1.4. Массивы
- •6.1.5. Структуры (записи)
- •6.1.6. Объединения union
- •6.1.7. Перечисления enum
- •Int main(int argc, char **argv) // основная процедура
- •6.2. Основные возможности
- •6.2.1. Предпроцессор
- •6.2.2. Директива #Include
- •6.2.3. Директива #define
- •6.2.4. Функция вывод на терминал - Printf
- •6.2.5. Функция ввод с клавиатуры - Scanf
- •6.2.6. Функция Main в консольных приложениях
- •6.2.7. Функции
- •Int main(int argc,char **argv) // основная функция
- •Int main(int argc, char **argv) // основная функция
- •6.2.8. Классы памяти
- •6.2.8.1. Автоматические переменные
- •6.2.8.2. Регистровые переменные
- •6.2.8.3. Статические переменные и функции
- •6.2.9.3. Логические операции
- •6.2.9.4. Операции присваивания
- •6.2.10.4. Условная операция ‑ ?
- •6.2.10.5. Оператор выбора варианта ‑ switch
- •6.2.10.6. Оператор безусловного перехода ‑ goto
- •6.2.10.7. Цикл с предусловием ‑ while
- •Int main(int argc, char **argv) // основная функция
- •Int search (int data [],int size,int key) // функция поиска элемента массива
- •6.2.10.8. Цикл с постусловием ‑ do while
- •Int main(int argc, char **argv) // основная функция
- •Int length (char str [ ]) // функция вычисления длины строки
- •Int compare (char str1 [ ], char str2 [ ] ) // функция сравнения строк
- •6.2.10.9. Итерационный цикл ‑ For
- •Int main(int argc, char **argv) { // основная функция
- •Int main(int argc, char **argv) { // основная функция
- •Int main(int argc, char **argv) { // основная функция
- •Void bubble_sort( float a [ ], int s ) { // функция сортировки массива
- •6.2.10.10. Пустой оператор
- •6.3. Указатели
- •6.4. Функции, методы и макросы
- •6.4.1. Математика
- •6.4.2. Обработка статистических данных
- •6.4.3. Взаимное преобразование чисел и строк типа char
- •Long double _strtold(const char *s, char**endptr) ‑ строки s в действительное число.
- •6.4.5. Преобразования дат и времени
- •6.4.6. Методы обработки строк типа AnsiString
- •6.4.7. Функции обработки строк типа AnsiString
- •6.4.8. Макросы обработки символов
- •6.4.9. Обработка строк с нулевым символом в конце
- •6.4.10. Управление каталогами и файлами на дисках
- •6.4.11. Диалоговые окна ввода и вывода сообщений
- •6.4.12. Воспроизведение звуков
- •6.4.13. Управление текущим процессом
- •6.4.14. Запуск из приложения внешних программ
- •6.5. Работа с файлами
- •6.5.1. Файлы в с
- •Int main(int argc, char **argv) // основная функция
- •Void __fastcall tForm1::Button1Click(tObject *Sender) // процедура
- •6.6. Объектно‑ориентированное программирование
- •6.6.1. Создание классов и объектов
- •6.6.2. Виртуальные методы
- •6.6.3. Дружественные функции
- •6.6.4. Шаблоны
- •6.6.5. Пространство имен
- •6.6.6. Явные объявления конструкторов
- •6.6.7. Непостоянные объявления
- •6.6.8. Быстрый вызов функций -_fastcall
- •6.6.9. Блок обработки исключений try ‑ catch -_finally
- •Вопросы для самопроверки и контроля
- •7.1. Создание консольного приложения
- •7.2. Основные элементы управления
- •7.3. Списки
- •Void cPrimDlg::OnAdd() //обработка кнопки “Добавить”
- •Void cPrimDlg::OnDelete()//обработка кнопки “Удалить”
- •Void cPrimDlg::OnDblclkList1() //обработка двойного щелчка по списку
- •7.4. Линейные регуляторы и индикаторы
- •Void cPrimDlg::OnCheck2()//обработка переключателя “Сброс”
- •Void cPrimDlg::OnHScroll(uint nSbCode, uint nPos, cScrollBar* pScrollBar) //функция обработки перемещения бегунка регулятора
- •Р ис. 8.1.1.1. Вид формы игры “Угадай число”
- •Var // раздел переменных модуля Unit1
- •8.1.2. Секундомер (Delphi)
- •Var // раздел переменных модуля Unit1
- •8.1.3. Бегущая строка (Delphi)
- •8.1.4. Рисование на экране (Delphi)
- •Var AllowChange: Boolean); // изменение счетчика UpDown1
- •8.1.5. Тестирование по арифметике (Delphi)
- •Var // раздел переменных модуля Unit1
- •8.1.6. Игра “Морской бой” (Delphi)
- •Р ис. 8.1.6.1. Вид формы игры “Морской бой”
- •Var // раздел переменных модуля Unit1
- •8.1.7. Вывод диаграммы (Delphi)
- •Var // раздел переменных модуля Unit1
- •8.1.8. Работа компонентов панелей Standard, Additional и Win32 (Delphi)
- •Р ис. 8.1.8.2. Вид формы с компонентами панели Win32
- •Void __fastcall tForm1::Button1Click(tObject *Sender) / /кнопка “Выход”
- •Void __fastcall tForm1::Button3Click(tObject *Sender) // кнопка “Загадать”
- •Void __fastcall tForm1::Button4Click(tObject *Sender) //кн.“Назвать слово”
- •Void __fastcall tForm1::Button5Click(tObject *Sender) // Вращать барабан
- •Void __fastcall tForm1::Button6Click(tObject *Sender) //кн. “Подтвердите”
- •Void __fastcall tForm2::Button1Click(tObject *Sender) //кн. “Подтвердите”
- •Void __fastcall tForm3::Button1Click(tObject *Sender) // кн. “Сохранить”
- •Void cPerevozkaPredmetovDlg::OnButton2() //кнопка “Очистить”
- •Void cPerevozkaPredmetovDlg::OnButton3() //кнопка “Перевезти”
- •8.2.4. Алгоритмы циклической структуры
- •8.2.5. Алгоритмы работы с рядами
- •8.2.6. Алгоритмы работы с массивами
- •8.2.7. Обработка символьных данных
- •8.2.8. Организация подпрограмм
- •8.2.9. Работа с файлами
- •8.2.10. Работа с формами и диаграммами
- •8.2.11. Курсовые работы
- •14. Учет малых предприятий.
- •15. Учет больных в больнице.
- •16. Учет движения общественного транспорта.
- •17. Учет дорожно-транспортных происшествий.
- •18. Учет платежных поручений в банке.
- •19. Учет договоров займа.
- •20. Учет проданных ценных бумаг.
- •21. Учет кадров.
- •22. Учет очередников на получение жилья.
- •23. Учет обмена валюты.
- •24. Учет объектов строительства.
- •25. Учет нарушителей трудовой дисциплины на предприятии.
- •26. Учет выдачи и возврата книг.
- •27. Учет исполнительской дисциплины.
- •28. Учет успеваемости студентов.
- •29. Учет книг в библиотеке.
- •30. Учет успеваемости школьников.
- •Приложения п р и л о ж е н и е 1. Ответы на вопросы для самопроверки
- •1.1. Типы данных
- •3. Работа с базами данных
- •П р и л о ж е н и е 2. Вопросы для экзаменационных билетов
- •Библиографический список
6.4.14. Запуск из приложения внешних программ
Функции объявлены в файлах process.h, stdlib.h, stdio.h
int execl(char *path, char *arg0, *argl, ..., *argn, NULL) ‑ выполняет порожденный процесс path с аргументами arg0 - argn.
int execle(char *path, char *arg0, *argl, ..., *argn, NULL, char **env - выполняет порожденный процесс path с аргументами arg0 - argn и с окружением env.
int execlp(char *path, char *arg0,*argl, ..., *argn, NULL) ‑ выполняет порожденный процесс path с аргументами arg0 ‑ argn, с поиском в PATH.
Пример вызова редактора Word:
execlp (“Winword”, “Winword”, “Delphi.doc”,NULL)
int execlpe(char *path, char *arg0, *argl, ..., *argn, NULL, char **env) - выполняет порожденный процесс path с аргументами arg0 ‑ argn, с поиском в PATH и с окружением env.
int execv(char *path, char *argv[]) ‑ выполняет порожденный процесс path с аргументами argv[].
int execvp(char *path, char *argv[]) ‑ выполняет порожденный процесс path с аргументами argv[], с поиском в PATH.
int system(const char *command) ‑ выполняет команду command операционной системы и возвращается в приложение.
6.5. Работа с файлами
6.5.1. Файлы в с
Состав файла задается структурой FILE. В начале работы стандартный файл ввода stdin приписывается клавиатуре, а стандартный файл вывода stdout - экрану дисплея. Перед обработкой файла он объявляется и затем открывается, а после обработки ‑ закрывается.
Файлы бывают следующих типов:
текстовый ‑ состоит из последовательности символов, разбитой на строки. Для деления на строки используется управляющий символ ‘\n’. Для работы с текстовыми файлами удобно работать специальными методами загрузки (LoadFromFile) и сохранения (SaveToFile);
двоичный - это последовательность значений типа char.
Символ EOF в операциях ввода/вывода служит для обозначения и проверки конца файла или возникновения ошибки ввода/вывода.
Функции открытия и закрытия файлов
FILE *fopen (char *filename, char *type) - открытие файла. В качестве первого аргумента передается имя файла.
Второй аргумент определяет тип открываемого файла:
r - открыть уже существующий файл на ввод;
w - создать новый файл или очистить уже существующий файл и открыть его на вывод;
а - создать новый файл для вывода или осуществить вывод в конец уже существующего файла;
r+ - открыть существующий файл для обновления с начала файла;
w+ - создать новый или очистить существующий файл для обновления его содержимого;
а+ - создать новый файл или подстроиться в конец существующего файла для обновления его содержимого.
Дополнительно к каждой из приведенных строк можно добавить символ
b - открывается двоичный файл.
Функция fopen возвращает указатель (файловая переменная) на структуру FILE, описывающую файл. Если при открытии файла произошли какие-либо ошибки, то в глобальную переменную еrrnо будет записан код (номер) ошибки, и будет возвращен нулевой (0) указатель.
int fclose (FILE *file) - файл закрывается. Если закрытие выполняется правильно, то возвращается 0, иначе ‑ EOF;
void rewind (FILE *file) ‑ указатель файла перемещается в начало файла.
Функции ввода
Int fgetc (FILE *file) - из указанного входного файла считывается очередной символ, и его значение переводится в тип int. Если при считывании обнаруживается ошибка или достигается конец файла, то возвращается значение EOF.
Int getchar() - из стандартного входного файла stdin считывается очередной символ, и его значение переводится в тип int.
Int getch() - аналогична getchar, но не требует нажатия клавиши после ввода символа и останавливает работу программы до нажатия клавиши. Эта функция используется для ввода односимвольного ответа.
int fseek (FILE *file, long offset, Int wherefrom) - служит для произвольного доступа к символам, обычно внутри двоичных файлов. Первый аргумент задает имя файла Второй аргумент offset является длинным целым числом со знаком и указывает число байтов смещения от точки, определяемой третьим параметром функции. Третий аргумент wherefrom указывает точку, от которой следует начинать отсчет смещения: от начала файла (0), текущей позиции файла (1), от конца файла (2).
char *fgets (char *s, Int n, FILE *file) - в строку s считываются символы до тех пор, пока не будет выполнено первым одно из условий: начнется новая строка, достигнут конец файла или прочитано n-1 символов. После того как из входного файла в строку s будут прочитаны символы, строка дополняется ноль‑символом (признак конца строки). Если операция считывания прошла успешно, то возвращается адрес строки s, иначе ‑ нуль.
char *gets ( char *s) - выполняется считывание символов из стандартного входного файла stdin. Если входной файл прерывается символом перехода на новую строку ‘\n’, то этот символ не попадает в строку s.
Int fread ( void *ptr, unsigned elem_size, int count, FILE *file) - из входного файла считываются и по адресу *ptr записываются не более чем количество count элементов размером elem_size байтов каждый. Функция возвращает число фактически считанных элементов.
Int feof(FILE *file) - если при чтении из указанного файла достигнут конец файла (попытка прочитать символ за пределами файла), то возвращается ненулевое значение, иначе - нулевое значение.
int scanfОшибка! Закладка не определена. (char *fornat, <дополнительные аргументы> );
int fscanf (FILE *strea“, char *format,< дополнительные аргументы> );
int sscanf (char *string, char *fогmаt,< дополнительные аргументы> );
int cscanf (char *format, <дополнительные аргументы> );
Все функции семейства scanf вводят поля символ за символом, переводя их в соответствии с указанным форматом. Функцией scanf осуществляется ввод из стандартного файла stdin. Функция fscanf может вводить из файла, указанного пользователем. Функция sscanf вводит из заданной строки. Функция cscanf вводит с консоли. Первое .вводимое поле преобразуется в соответствии со спецификацией формата, и полученное значение заносится по адресу первого аргумента. Следующее поле переводится в соответствии со второй спецификацией формата и т.д. Спецификация формата аналогична спецификации формата для семейства функций printf (п. 6.2.4).
Поля ввода определяются по следующим правилам:
группа символов до (но не включая) символа - разделителя;
группа символов до такого символа, который не может быть преобразован в соответствии с текущей спецификацией;
группа из n символов, где n - указатель ширины поля.
Функции вывода
Int fflush (FILE *file) - служит для выталкивания каждого внутреннего буфера на соответствующее устройство. После вызова функции файл остается открытым. Если при выполнении функции появятся ошибки, то будет возвращено значение EOF, иначе - 0.
Int fputc (char ch, FILE *file) - символ ch записывается в указанный выходной файл. Если запись прошла успешно, то возвращается значение ch.
int putchar (char ch) - действует аналогично функции fputc, но записывает символ ch в стандартный выходной файл stdout.
Int fputs (char *s, FILE *file) - строка s, ограниченная ноль-символом, переписывается в выходной файл, причем ноль-символ отбрасывается. Если при переписи возникает ошибка, то возвращается значение EOF, в противном случае возвращается ненулевое значение.
Int puts (char *s) - функция аналогична функции fputs, за исключением того, что символы переписываются в стандартный файл stdout, и строка s дополняется ноль‑символом конца строки.
Int fwrite (void *ptr, unsigned elem_size,Int count,FILE <stream>) - начиная с адреса ptr, считывается не более чем количество count элементов размером elem_size байтов каждый, и эти элементы записываются в выходной файл. Функция возвращает число фактически записанных элементов.
Int fprintf (FILE *stream,char *format,< список выводимых значений> );
Int printf (char *format ,<список выводимых значений> );
Int sprintf (char *s, char *foramt, < список выводимых значений> );
Int cprintf (char *format, < список выводимых значений> );
С помощью этих функций выполняется форматный вывод соответственно в: выходной файл (fprintf), в стандартный выходной файл stdout (fprintf), указанную строку (sprintf) или на терминал (cprintf). Функции возвращают число символов, переданных по назначению.
Строка формата (char *format) задает редактирование данных (п. 6.2.5).
Функции обработки ошибок
Int ferror (FILE *file) - возвращает нулевое значение, если последняя операция ввода/вывода с указанным файлом закончилась успешно, иначе ‑ ненулевое значение.
void clearerr (FILE *file) - устанавливается в нуль состояние признака ошибки в указанном файле.
Пример программы создания справочника товара spravtov.txt