А.Б. Григорьев О чём не пишут в книгах по Delphi Введение Глава 1 Windows API и Delphi 1.1. Основы работы Windows API в VCL-приложениях 1.1.1. Что такое Windows API 1.1.2. Как получить справку по функциям Windows API 1.1.3. Дескрипторы вместо классов 1.1.4. Формы VCL и окна Windows 1.1.5. Функции обратного вызова 1.1.6. Сообщения Windows 1.1.7. Создание окон средствами VCL 1.1.8. Обработка сообщений с помощью VCL 1.1.9. Сообщения, определяемые пользователем 1.1.10. Особые сообщения 1.1.11. Графика в Windows API 1.1.12. ANSI и Unicode 1.1.13. Строки в Windows API 1.2. Примеры использования Windows API 1.2.1. Пример EnumWnd 1.2.2. Пример Line 1.2.3. Пример CoordLabel 1.2.4. Пример PanelMsg 1.2.5. Пример NumBroadcast 1.2.6. Пример ButtonDel 1.2.7. Пример GDIDraw 1.2.8. Пример BitmapSpeed 1.3. Обобщающие примеры 1.3.1. Обобщающий пример 1 — Информация о процессах 1.3.1.1. Получение списка процессов 1.3.1.2. Получение списка и свойств окон 1.3.2. Обобщающий пример 2 — Ассоциированные файлы и предотвращение запуска второй копии приложения 1.3.2.1. Ассоциирование расширения с приложением 1.3.2.2. Командная строка 1.3.2.3. Поиск уже запущенной копии приложения 1.3.2.4. Перевод приложения на передний план 1.3.3. Обобщающий пример 3 — "Дырявое" окно 1.3.3.1. Сообщение WM_NCHCHITTEST 1.3.3.2. Регионы 1.3.3.3. Сообщения WM_SIZE и WM_SIZING 1.3.3.4. А теперь — все вместе 1.3.4. Обобщающий пример 4 — Линии нестандартного стиля 1.3.4.1. Получение координат точек прямой 1.3.4.2. "Резиновая" линия и растровые операции 1.3.4.3. Кривые Безье 1.3.4.4. Траектории 1.3.4.5. Интерактивная кривая Глава 2 Использование сокетов Delphi 2.1. Стандартные сокеты 2.1.1 Соглашения об именах 2.1.2. Общие сведения о сокетах 2.1.3. Сетевые протоколы. Семиуровневая модель OSI 2.1.4. Стек TCP/IP 2.1.5. Протокол UDP 2.1.6. Протокол TCP 2.1.7. Сетевые экраны 2.1.8. Создание сокета 2.1.9. Передача данных при использовании UDP 2.1.10. Пример программы: простейший чат на UDP 2.1.11. Передача данных при использовании TCP 2.1.12. Примеры передачи данных с помощью TCP 2.1.13. Определение готовности сокета 2.1.14. Примеры использования функции select 2.1.15. Неблокирующий режим 2.1.16. Сервер на неблокирующих сокетах 2.1.17. Параметры сокета 2.1.18. Итоги первого раздела 2.2. Сокеты Windows 2.2.1. Версии Windows Sockets 2.2.2. Устаревшие функции WinSock 1 2.2.3. Информация о протоколе 2.2.4. Новые функции 2.2.5. Асинхронный режим, основанный на сообщениях 2.2.6. Пример сервера, основанного на сообщениях 2.2.7. Асинхронный режим, основанный на событиях 2.2.8. Пример использования сокетов с событиями 2.2.9. Перекрытый ввод-вывод 2.2.10. Сервер, использующий перекрытый ввод-вывод 2.2.11. Многоадресная рассылка 2.2.12. Дополнительные функции 2.3. Итоги главы Глава 3 "Подводные камни" 3.1. Неочевидные особенности целых чисел 3.1.1. Аппаратное представление целых чисел 3.1.2. Выход за пределы диапазона при присваивании 3.1.3. Переполнение при арифметических операциях 3.1.4. Сравнение знакового и беззнакового числа 3.1.5. Неявное преобразование в цикле for 3.2. Неочевидные особенности вещественных чисел 3.2.1. Двоичные дроби 3.2.2. Вещественные типы Delphi 3.2.3. Внутренний формат вещественных чисел 3.2.4. "Неполноценный" Extended 3.2.5. Бесконечные дроби 3.2.6. "Неправильное" значение 3.2.7. Сравнение 3.2.8. Сравнение разных типов 3.2.9. Вычитание в цикле 3.2.10. Неожиданная потеря точности 3.2.11. Борьба с потерей точности в VCL 3.2.12. Машинное эпсилон 3.2.13. Методы решения проблем 3.3. Тонкости работы со строками 3.3.1. Виды строк в Delphi 3.3.2. Хранение строковых литералов 3.3.3. Приведение литералов к типу PChar 3.3.4. Сравнение строк 3.3.5. Побочное изменение 3.3.6. Нулевой символ в середине строки 3.3.7. Функция, возвращающая AnsiString 3.3.8. Строки в записях 3.3.9. Использование ShareMem 3.4. Прочие "подводные камни" 3.4.1. Порядок вычисления операндов 3.4.2. Зацикливание обработчика TUpDown.OnClick при открытии диалогового окна в обработчике 3.4.3. Access violation при закрытии формы с перекрытым методом WndProc 3.4.4. Подмена имени оконного класса, возвращаемого функцией GetClassInfo 3.4.5. Ошибка EReadError при использовании вещественных свойств 3.4.6. Ошибка List index out of bounds при корректном значении индекса 3.4.7. Неправильное поведение свойства Anchors 3.4.8. Ошибка при сравнении указателей на метод 3.4.9. Возможность получения адреса свойства 3.4.10. Невозможность использования некоторых свойств оконного компонента в деструкторе Глава 4 Разбор и вычисление выражений 4.1. Синтаксис и семантика 4.2. Формальное описание синтаксиса 4.3. Синтаксис вещественного числа 4.4. Простой калькулятор 4.5. Учет приоритета операторов 4.6. Выражения со скобками 4.7. Полноценный калькулятор 4.8. Калькулятор с лексическим анализатором 4.9. Однопроходный калькулятор и функции с несколькими переменными 4.10. Еще немного теории Приложение 1 Сайт "Королевство Delphi" Приложение 2 Содержимое компакт-диска Примеры к главе 1 Примеры к главе 2 Примеры к главе 3 Примеры к главе 4 Список литературы
А.Б. Григорьев О чём не пишут в книгах по Delphi Благодарности #9633; Елене Филипповой, создательнице и бессменному главному администратору сайта "Королевство Delphi".
#9633; Алексею Ковязину (российское отделение CodeGear) за помощь в выпуске этой книги.
#9633; Юрию Зотову, натолкнувшему меня на идею четвертой главы и некоторых разделов первой и третьей глав.
#9633; Многочисленным посетителям сайта "Королевство Delphi", при общении с которыми выяснялись интересные факты и рождались идеи, нашедшие себе место в этой книге.
#9633; Товарищу Witchking за сканирование
#9633; Товарищу DarkArt за подготовку электронного варианта