Delphi 3. Библиотека программиста
От редактора перевода
Предисловие
Глава 1. 32-разрядные консольные приложения
Консольные приложения
Фильтры
Консольные приложения на Delphi
Hello, Delphi
Сохранение шаблона программы
Консольный ввод/вывод
Программа-фильтр на Delphi
Базовая программа-фильтр
Обработка командной строки
Параметры командной строки
Универсальный анализатор командных строк
Тестирование модуля CmdLine
Несколько слов о структуре программы
Файловые операции чтения/записи
Использование шаблона Filter
Критика
Глава 2. 32-разрядные DLL в Delphi - когда, зачем и как
Что такое DLL и зачем они нужны?
Как это сделать?
Создание DLL
Вызов функций DLL
Присоединение DLL на стадии выполнения
Где Windows ищет DLL
DLL: недостатки и предостережения
Создание форм в DLL
Гибкое кодирование
Создание текстового редактора
Совместное использование памяти в приложениях
Переменная DLLProc
Продолжаем!
Глава 3. Перетаскивание: как это делается в Windows
Перетаскивание
Что делать с кодом Windows?
Обработка сообщений Windows
Нестандартные элементы
Субклассирование
Определение интерфейса
Реализация нового интерфейса
Снова о субклассировании
Глава 4. Перетаскивание: как это делается в OLE
Что такое OLE?
Наследование OLE и TInterfacedObject
Требования к перетаскиванию OLE
Обязанности клиента
Как работает программа
Что дальше?
Хочу быть сервером!
Обязанности сервера
Требования к интерфейсу IDropSource
Интерфейс IDataObject хранит данные
Реализация сервера
OLE!
Глава 5. Компонент Winsock в Delphi
Что такое Winsock?
Изучаем CsSocket
Приложение RESOLVER32
Как меня зовут?
Какой у тебя адрес?
Как тебя зовут?
Асинхронное получение адреса
Кто находится по этому адресу?
Отмена операции WSAAsync
Преобразование портов и сервисов
Поиск сервиса
Преобразование протоколов
Использование свойства Tag
Стоит ли блокировать?
Глава 6. CsShopper: FTP-клиент
Вас обслуживают?
Компонент CsShopper
Организация вывода
SHOPPER32 за работой
Профили SHOPPER32
Подключение
Закрываем соединение
Прием и передача файлов
Изменение каталогов для пересылки файлов
Передача файлов
Пересылка нескольких файлов
Асинхронная пересылка файлов
Положи на место!
Заключение
Глава 7. FTP-сервер
CsKeeper за работой
Конфигурирование KEEPER32 на вкладке Options
Вопросы безопасности
Где и как хранится конфигурация
Открываемся!
Вывод списка каталогов и файлов
Создание прослушивающего сокета
Как вас обслуживают?
Вход строго по одному
Мне, пожалуйста, вот это…
Сохраните, пожалуйста…
Закрыто на переучет
Глава 8. Трехмерные фрактальные ландшафты
Разделяй и сгибай
Проблема общих сторон
Треугольный массив
Изгибы
Сначала построить, потом выводить
Генерация и отображение ландшафта
Процедура Project()
Каркасный режим
Режим с заполнением
Режим со светотенью
Создавайте собственные миры
Глава 9. Проблемы TPersistent и несколько полезных советов
Читаем, чтобы записывать?
Разумные решения
Использование RDTSC для измерения временных интервалов на Pentium
Перетаскивание текста в списках
Строковые коллекции и списки
Установка приложений - дело рук самих приложений
Использование inherited с переопределенными свойствами
Копирование экрана
Группы переключателей с индивидуальной блокировкой
Захват системной палитры
Работа с буфером как с потоком
Оперативное изменение подсказок
Использование макросов в редакторе Delphi
Потоки и TPersistent
Отображение перетаскиваемого объекта в Delphi 2 и 3
Глава 10. Модели, виды и фреймы
Практическая реализация видов
Шаблоны компонентов и составные компоненты
Наследование форм
От внедренных форм к видам
Почему интерфейсы?
Интерфейсные формы
Проблемы с подсчетом ссылок в Delphi 3
Абстрактные, контролируемые и неконтролируемые виды
Редакторы моделей
Пример модели
Другие применения
Глава 11. Таинственный модуль Math
Три веских довода в пользу модуля Math
Динамические данные и статические объявления
Slice спешит на помощь
Создание компонента DBStatistics
Получение доступа к данным
Локальное хранение данных
Извлечение данных
Статистическая обработка
Тестирование компонента DBStatistics
Ошибки в модуле Math второй версии Delphi
Пропавшая функция Poly
Сводка функций модуля Math
Тригонометрические функции и процедуры
Арифметические функции и процедуры
Финансовые функции и процедуры
Статистические функции и процедуры
Глава 12. Динамический пользовательский интерфейс
Пример приложения «Настрой меня сам»
Строим «мини-Delphi» для пользователей
Перемещение элементов
Масштабирование элементов
Работа с контекстным меню
Отмена изменений
Изменение порядка перебора элементов во время выполнения
Изменение других свойств
Изменение свойств в инспекторе объектов
Сохранение внесенных изменений
Загвоздка: компоненты со свойствами-компонентами
Другой подход к потокам
На пути к гибким пользовательским интерфейсам
Глава 13. Иерархические структуры в реляционных базах данных
Иерархия «один-ко-многим»
Простейший пример иерархических рекурсивных данных
Использование TQuery для определения набора подчиненных записей
Вложенные рекурсивные иерархические данные
Перемещение по иерархии
Отображение данных
Использование данных
Поиск записей
Применение иерархических данных в запросах
Целостность структуры и циклические ссылки
Использование SQL
Проблема произвольной вложенности
Использование сохраненных процедур
Компоненты TreeData
Работа со свойствами элементов TreeData
Внутреннее строение компонентов TreeData
TreeDataComboBox
TreeDataListBox
TreeDataOutline и TreeDataUpdate
Главный секрет иерархий
Глава 14. Пропавший оракул
Вечером в конторе
Мольба о помощи
Пропажа
На другом краю города
Классическое перетаскивание
Перетаскивание: как это делается
Сброс груза
Упаковка таблиц Paradox и dBASE
Демонстрационная программа
Снова в конторе Эйса
Смысловые оттенки
Воспроизведение WAV-файла
Звук в приложении
Упущение
Глава 15. Улика, найденная в грязи
Масштабирование форм
Создание заставок
Эйс получает ответ
Глобальный доступ к данным в приложении
Потрясающее открытие
Прогулка по Win95
Внимание, сейчас вылетит птичка…
Модуль WalkStuf
Итоги
Глава 16. Возвращение оракула
Совместное использование обработчиков событий
Первая попытка
Тернистый путь познания
И последнее замечание…
Использование файлов в памяти
Перед началом
Запрет выполнения программы
Плавающие панели инструментов
Эйс выходит победителем
Эпилог
Глава 17. Нестареющая проблема
Сложная ситуация
Суть проблемы
Конструирование DLL
Инициализация
Сигналы от семафора
Завершение
Функции DLL
Создание компонента-отправителя
Создание компонента-получателя
Субклассирование окна-владельца
Другие интересные моменты
Создание демонстрационной программы Receiver
Создание демонстрационной программы Sender
Внезапное пробуждение