О чём не пишут в книгах по Delphi - А. Григорьев
Шрифт:
Интервал:
Закладка:
Служба личных сообщений (СЛС). С помощью этого сервиса зарегистрированные пользователи могут отправлять друг другу сообщения, которые можно прочитать на сайте Королевства.
Глас народа! В этом разделе проводятся опросы по разным актуальным для программистов темам.
Книга Песка. Здесь собираются ссылки на сайты по Delphi и интернет-ресурсы смежной тематики. Ссылки упорядочены по темам, благодаря чему легко получить список сайтов нужной тематики.
Дальние земли. Здесь представлены ссылки на сайты, с которыми у Королевства установились особо дружественные отношения вплоть до проведения совместных проектов. Когда Королевство только-только появилось. существовало очень много сайтов, посвященных Delphi (буквально каждый второй программист считал необходимым создать свой сайт), и казалось, что в этом множестве сайтов действительно следует выделять особо близкие. Но в дальнейшем количество сайтов резко уменьшилось (далеко не у всех хватило сил наполнять сайт оригинальным содержанием), и смысл в особом выделения кого-то пропал. Поэтому раздел практически пустой.
Школа ОБЕРОНА. Этот раздел посвящен языку Оберон и его потомкам. Оберон на данный момент последний из разработанных Никлаусом Виртом языков, в котором заложен ряд интересных решений. В разделе Школа ОБЕРОНА собраны ссылки на ресурсы, посвященные этому языку, а также ссылки на несколько обсуждений на Базарной площади, которые имеют к нему отношение.
В Королевстве регулярно проводятся конкурсы, позволяющие выявить тех, кто лучше других отвечает на вопросы, появляющиеся на Круглом столе. В период проведения конкурса каждый зарегистрированный посетитель Королевства может проголосовать за понравившийся ему ответ, указав, на какую из возможных номинаций он его выдвигает. Голоса проверяются жюри (состоящем из членов команды Королевства) на соответствие требованиям номинации, несоответствующие отбраковываются, и составляется рейтинг отвечающих. По рейтингу определяется победитель в каждой из номинаций. Победители получают значок щита к своему нику и венок в личную страницу в Рыцарском зале. Обычно в конкурсе три номинации: "Самый фундаментальный ответ". "Самый терпеливый рыцарь" и "Хороший совет". Первая подразумевает ответы, которые не только устраняют проблему, но и детально объясняют, почему она возникает и почему решать ее следует именно так. Вторая номинация предназначена для людей, которые терпеливо объясняют что-либо, раз за разом возвращаясь к одному и тому же вопросу и дают дополнительные пояснения до тех пор, пока автор вопроса не поймет все. Под третью номинацию попадают ответы, в которых автору вопроса действительно дан полезный совет, но с обязательной оговоркой, что вопрос не должен быть слишком простым, а ответ на него — тривиальным.
Королевство Delphi — принципиально некоммерческий проект, на котором отсутствует реклама. Поддержка и развитие сайта осуществляется исключительно за счет энтузиазма команды Королевства и его жителей, которые время от времени помогают улучшать сайт. В настоящее время сайт настолько разросся, что найти для него бесплатный хостинг стало невозможно, поэтому для оплаты хостинга собираются добровольные пожертвования. В соответствии с принципиальной позицией команды Королевства все эти пожертвования анонимны, и пожертвовавший не получает никаких преимуществ по сравнению с теми, кто не заплатил.
Автор данной книги является постоянным посетителем Королевства Delphi. В эту книгу вошел ряд статей, опубликованных автором на страницах Королевства и переработанных с учетом замечаний и пожеланий, высказанных посетителями сайта. Связаться с автором можно через его личную страницу в Рыцарском зале http://www.delphikingdom.com/asp/users.asp?ID=73.
Заметка, посвященная данной книге, находится но адресу http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1326, и если вы хотите, чтобы ваш отзыв или вопрос увидел не только автор, пишите комментарий к этой заметке.
Приложение 2
Содержимое компакт-диска
Прилагаемый к книге компакт-диск содержит примеры программ, разобранные в тексте книги. Примеры разбиты на четыре папки, каждая из которых соответствует одной главе. Все примеры могут быть откомпилированы в любой версии Delphi, начиная с 5-й.
Примеры к главе 1
Примеры к первой главе находятся в папке 1 Windows API и Delphi. Содержимое папки приведено в табл. П2.1.
Таблица П2.1. Примеры к главе 1
Папка Подпапка Описание Разделы главы Основы работы с Win API в VCL-приложениях EnumWnd Пример работы с функцией EnumWnd 1.1.5. Функции обратного вызова. 1.1.13. Строки в Windows API. 1.2.1. Пример EnumWnd Line Пример перехвата невизуальным компонентом сообщений формы-владельца 1.1.8. Обработка сообщений с помощью VCL. 1.2.2. Пример Line CoordLabel Пример перехвата визуальным компонентом сообщений родительского окна 1.1.8. Обработка сообщений с помощью VCL. 1.2.3. Пример CoordLabel PanelMsg Пример перехвата формой сообщений расположенного на нем компонента и обработки перехваченного сообщения WM_PAINT 1.1.8. Обработка сообщений с помощью VCL. 1.1.10. Особые сообщения. 1.1.11 Графика в Windows API. 1.2.4. Пример PanelMsg NumBroadcast Пример регистрации глобального сообщения, его широковещательной отправки и получения 1.1.8. Обработка сообщений с помощью VCL. 1.1.9. Сообщения, определяемые пользователем. 1.2.5. Пример NumBroadcast ButtonDel Пример удаления кнопки при ее нажатии 1.1.8 Обработка сообщений с помощью VCL. 1.2.6 Пример ButtonDel GDIDraw Пример использования графических средств GDI, не поддерживающихся классом TCanvas 1.1.11. Графика в Windows API. 1.2.7 Пример GDIDraw BitmapSpeed Программа для сравнения скорости различных операций на DDB- и DIB-растрах 1.1.11 Графика в Windows API. 1.2.8. Пример BitmapSpeed Обобщающий пример 1 ProcInfo Программа, показывающая информацию о запущенных в системе процессах и открытых ими окнах 1.3.1. Обобщающий пример 1 — Информация о процессах Обобщающий пример 2 DKSView Программа, регистрирующая в реестре расширение своих файлов и не допускающая запуска двух копий одновременно 1.3.2. Обобщающий пример 2 — Ассоциированные файлы и предотвращение запуска второй копии приложения Обобщающий пример 3 WndHole Программа, демонстрирующая, как сделать окно с прямоугольным отверстием, размеры которого могут изменяться пользователем 1.3.3. Обобщающий пример 3 — "Дырявое" окно Обобщающий пример 4 Lines Пример рисования прямых нестандартными стилями и создания "резиновой" линии 1.3.4. Обобщающий пример 4 — Линии нестандартного стиля Bezier Пример рисования кривых Безье нестандартными стилями и создания "резиновой" кривой 1.3.4. Обобщающий пример 4 — Линии нестандартного стиляПримеры к главе 2
Примеры ко второй главе находятся в папке 2 Использование сокетов в Delphi, содержимое которой приведено в табл. П2.2.
Таблица П2.2. Примеры к главе 2
Папка Описание Разделы главы UDPChat Простейший чат с использованием UDP. Прием и отправка сообщений в разных нитях через различные сокеты 2.1.5. Протокол UDP. 2.1.8. Создание сокета. 2.1.9. Передача данных при использовании UDP. 2.1.10. Пример программы — простейший чат на UDP SimplestServer Простейший TCP-сервер, реализованный в виде консольного приложения и работающий на блокирующих сокетах в одной нити. Способен взаимодействовать только с одним клиентом одновременно 2.1.6. Протокол TCP. 2.1.8. Создание сокета. 2.1.11. Передача данных при использовании TCP. 2.1.12. Примеры передачи данных с помощью TCP SimpleClient Простой TCP-клиент использующий блокирующие сокеты и работающий с одним сервером 2.1.6. Протокол TCP. 2.1.8. Создание сокета. 2.1.11. Передача данных при использовании TCP. 2.1.12. Примеры передачи данных с помощью TCP MultithreadedServer Многонитевой TCP-сервер на блокирующих сокетах, работающий с неограниченным чистом клиентов. Для каждого клиента создается отдельная нить 2.1.5. Протокол TCP. 2.1.8. Создание сокета. 2.1.11. Передача данных при использовании TCP. 2.1.12. Примеры передачи данных с помощью TCP SelectChat UDP-чат с одним сокетом и одной нитью и для приема и для отправки сообщений. Для определения момента получения данных используется функция select 2.1.13. Определение готовности сокета. 2.1.14. Примеры использования функции select SelectServer Однонитевой TCP-сервер, работающий на блокирующих сокетах и способный к взаимодействию одновременно с неограниченным числом клиентов. Для определения момента получения данных используется функция select 2.1.13. Определение готовности сокета. 2.1.14. Примеры использования функции select NonBlockingServer Однонитевой TCP-сервер, работающий на неблокирующих сокетах и способный к взаимодействию одновременно с неограниченным числом клиентов 2.1.15. Неблокирующий режим. 2.1.16. Сервер на неблокирующих сокетах AsyncSelectServer TСР-сервер, использующий оконные сообщения для взаимодействия с неограниченным числом клиентов 2.2.5. Асинхронный режим, основанный на сообщениях. 2.2.6. Пример сервера, основанного на сообщениях EventSelectServer Многонитевой TCP-сервер. Нить, устанавливающая подключения, и нити, взаимодействующие с клиентами, управляются событиями, связанными с сокетами 2.2.7. Асинхронный режим, основанный на событиях. 2.2.8 Пример использования сокетов с событиями EventSelectClient TCP-клиент, поддерживающий расширенную версию протокола обмена, реализованную в примере EventSelectServer. Использует сокеты, основанные на оконных сообщениях 2.2.5. Асинхронный режим, основанный на сообщениях. 2.2.7. Асинхронный режим, основанный на событиях. 2.2.8. Пример использования сокетов с событиями OverlappedServer TCP-сервер на основе перекрытого ввода-вывода с использованием процедур завершения 2.2.9. Перекрытый ввод-вывод. 2.2.10. Сервер, использующий перекрытый ввод-выводПримеры к главе 3