- •Рецензенты:
- •Ответственные за выпуск:
- •Введение 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. Вопросы для экзаменационных билетов
- •Библиографический список
5.6. Основные отличия новых версий Delphi
Приведем основные отличия новых версий Delphi. Пункт 5.6 подготовлен Е. Виноградовой.
Версия Delphi 6
Наличие нового окна «Обозреватель дерева объектов (Object Tree View)», которое позволяет просматривать иерархию объектов. Данное нововведение позволяет осуществлять быстрый переход от одного объекта формы к другому. Это удобно в том случае, если, например, компонент имеет небольшой размер.
Введен редактор кода, поддерживающий просмотр кода и других элементов приложения с помощью закладок многостраничного блокнота.
В ведена панель инструментов Internet, которая облегчает разработку приложений для Web-серверов.
Введена новая страница WebSnap, компоненты которой также служат для создания приложений Web-серверов.
О беспечивается поддержка программирования с использованием документов XML.
Введены новые компоненты, позволяющие использовать XML при разработке приложений баз данных.
Большинство функций по управлению сервером InterBase переданы программе IBConsole, которая используется вместо программы InterBase Windows Interactive SQL (рис. 5.3.1).
Рис. 5.3.1. Окно IBConsole
Введен новый механизм доступа к данным - dbexpress, обеспечивающий быстрый доступ к серверам баз данных SQL.
В палитру компонентов добавлена новая страница InterBase Admin, компоненты которой служат для доступа к базе данных InterBase.
Добавлен ряд новых компонентов с целью упрощения работы с клиентскими наборами данных.
Компоненты, осуществляющие доступ к данным с помощью Borland Database Engine, перенесены на страницу BDE палитры.
В результате стал более удобным доступ к компонентам для работы с базами данных BDE.
Обновлены компоненты InterBase Express, включая расширенную поддержку событий и поддержку генераторов Interbase, автоматически устанавливающих значения полей.
Добавлены новые компоненты на странице Additional, предназначенные для синхронизации управляющих элементов, а также новые компоненты TLabeleEdit, TvalueListEditor, TcomboBoxEx, TcolorBox, предназначенные для управления элементами интерфейса.
Улучшены и введены новые свойства ряда элементов управления.
Отсортированы системные цвета, что облегчает их поиск; к стандартным шестнадцати цветам добавлены еще четыре.
Ряд функций перемещен в модуль System, и в то же время много функций из этого модуля перемещены в новый модуль Variants.
Добавлена коллекция функций для работы с датой и временем в модуле DateUtils.
Введены новые константы и функции в модуле Math.
Разрешено определять пользовательские типы данных Variant.
Введена новая библиотека CLX (межплатформенный вариант библиотеки VCL), позволяющая разрабатывать приложения, функционирующие под управлением Windows и Linux.
Версия Delphi 7
Улучшенная поддержка создания кроссплатформенных приложений.
Введение поддержки использования технологии CASE и языка UML.
Язык Object Pascal переименован в Delphi, полностью идентичный по синтаксису и семантике.
Введена инструментальная поддержка CASE-технологий - Model Maker.
Изменены технологии создания приложений для сети Интернет.
С помощью набора компонентов IntraWeb можно разрабатывать приложения, которые не будут требовать обязательного посредничества Web-сервера между созданными приложениями и браузером пользователя (только для режима Stand Alone Application). Введена поддержка промышленного сервера Apache 2.
Устранены любые отличия в версиях языка Delphi для самого Delphi и Kylix 3, что значительно упрощает процесс создания кроссплатформенных приложений. Эта попытка унификации VCL и CLX привела к тому, что в стандартную версию Delphi 7 не были включены наборы компонентов Quick Report и FastNet. Эти наборы были заменены компонентами Rave Reports и Indy, хотя для полной совместимости Borland оставила возможность внедрения Quick Report в среду разработки путем подключения специальной библиотеки, которая поставляется вместе с Delphi (только для версии Delphi 7).
Версия Delphi 2005
Среда разработки теперь имеет интерфейс MDI; модифицировалось также окно «что нового» - теперь это полноценная приветственная страничка.
Перевести интерфейс в традиционный SDI вид можно следующим образом: Tools/Options/Environment Options/Delphi Options/VCL Designer/ Options/Embedded designer.
Палитра компонентов теперь размещена внизу справа, при переключении между формой и редактором кода палитра автоматически меняется.
В Project Manager теперь встроены закладки Model View и Data Explorer.
Можно вырезать кусок кода и автоматически оформить его как метод или процедуру.
Можно объявлять переменные или поля класса на ходу (напишите в любом месте кода имя переменной, затем выбрать команду Refactoring/Declare variable из контекстного меню).
Возможность поиска локальных и глобальных ссылок на объект, поиск объявления объекта.
Автокомментирование строки клавишами «Ctrl+/».
Можно свернуть любой блок кода секции Unit, описания класса, текста процедур, функций и т.д.
Изменена справочная система. Теперь она имеет интерфейс, схожий с интерфейсом справочной системы Windows XP.
У компилятора Delphi появилась возможность использовать Inline‑кода. Теперь, если процедура или функция имеют директиву Inline, это заставит компилятор попытаться вставить в место, где эта процедура используется, не вызов, а код тела процедуры.
Для компилятора Delphi for .Net добавлена возможность включения потенциально небезопасного кода в приложения .Net.
Появилась возможность использовать в именах типов и переменных символы Unicode.
Изменилась работа с точками останова. Появилась возможность, не удаляя саму точку, отключить ее, пометив Disable.
В среду интегрирован новый Data Explorer, который содержит как средства просмотра БД, так и ряд инструментов для редактирования.
Глава 6. C++ Builder
С++Builder ‑ это Delphi, в котором Delphi (Паскаль) заменен на C++ [6]. Язык С [3] был разработан в 1972 г. сотрудником фирмы AT&T Bell Laboratories Деннисом Ритчи в рамках проекта создания операционной системы Unix. В настоящее время он является универсальным языком программирования общесистемных программных средств (операционных и сетевых систем, СУБД, текстовых, табличных и графических редакторов и др.) и прикладных задач. Современной версией языка С является C++ (автор - Б. Страуструп) [6]. Язык С является подмножеством C++.
Допускается создание консольного приложения (командой File/ New/Console Wizard). Это приложение выполняется под управлением DOS и позволяет использовать функции непосредственного ввода (scanf) и вывода (printf) данных на консоль, не используя визуальные средства. Это позволяет в десятки раз уменьшить размер исполняемого Exe-файла и использовать в С++ Builder программы, написанные ранее на языке С или C++, которые выполнялись под DOS.
Для консольного приложения обычно требуются директивы:
#include <stdio.h> // подключение модуля стандартного ввод-вывода
#include <conio.h> // подключение модуля ввод-вывода на консоль
#include <stdlib.h> // стандартная библиотека общего назначения
#include <fstream.h>// стандартная библиотека ввода-вывода потоков в С++
Большинство приведенных в этой главе примеров оформлены в виде консольных приложений. Их можно легко изменить и перевести в обычные приложения (например, оформить в виде функции обработки события Click нажатия кнопки Button), заменив вывод функцией printf на вывод в метку Label или в массив строк объекта Memo (Memo1->Lines->Add(str)), функцию ввода scanf ‑ на ввод из полей Edit и удалить функцию задержки работы программы getch.
В нимание! В консольных приложениях используется кодировка символов, принятая в DOS. Это не позволяет выводить без дополнительной перекодировки текст, набранный при создании консольного приложения в С++ Builder.
Для быстрого освоения и перехода из Delphi в C++ Builder и обратно приведем основные общие черты и различия между ними.
Основные общие черты C++ Builder и Delphi
Единая библиотека визуальных компонентов (VCL) с одинаковым набором и обозначениями компонентов, их свойств, методов и событий.
Практически одинаковая технология и единая визуальная среда быстрой разработки приложений.
много одинаковых функций (например, преобразования данных).
Основные отличия C++ Builder от Delphi
Используются различные языки C++ и Delphi соответственно.
Прописные и строчные буквы в С++ различаются, что требует от пользователя соблюдения регистров при написании идентификаторов.
Для функций без параметром указываются круглые скобки.
Свойствам Caption и Text можно присваивать текстовые, числовые и датные значения, а не обязательно только текстовые, как в Delphi.
Операторы присваивания и сравнения на равенство записываются в виде одного и двух знаков равенства, соответственно, вместо “:=” и “=”.
Символьные константы заключаются в кавычки (fam=”Иванов”).
Директивы компиляции задаются в виде #pragma <значение>.
Для ссылки на объект, созданный из компонента VCL используется не точка, а косвенная ссылка в виде стрелочки из двух символов (“->”) или прямая ссылка в виде (*<имя объекта>).
Пример: Button1->Caption=”Выход” или (*Button1).Caption=”Выход”
Для включения в приложение модуля требуется выполнение команды File/Include Unit ....
Условные выражения в командах if, while, switch заключаются в круглые скобки и логические операции имеют меньший приоритет, чем операции сравнения.
Оператор присоединения With отсутствует.
Можно использовать библиотеку фундаментальных классов MFC.
Используя ключевое слово as, в Delphi можно написать:
procedure TForm1.Button1Click(Sender: TObject);
begin with Sender as TButton do Caption:='Выход'; end.
Слова as нет в C++ Builder, но есть оператор динамического преобразования типа dynamic_cast, который не связан с исключениями. Используя его, можно записать последний пример в C++ Builder в виде:
void __fastcall TForm1::Button1Click(TObject *Sender) // знак :: см. в п. 6.6.1
{ TButton* Button=dynamic_cast <TButton*> (Sender);
if (Button) Button1->Caption=”Выход”; }