    Special Edition
    USING 
    DELPHI 3 

    Written by Todd Мillеr and David Powell with 

    Roland Eoucbereau • Julian BuchiaU • Bill Curtis • Scott Frolich 
    Joe C. Hecht • Chaim Krause • Mark Pritchard •   Noel Rice 
    J.W. Rider • Quentin Saraftnchan • Stephen A. Scbafer • Eric Uber 

    QUE 

4

    Спщиалшое издание 
    ИСПОЛЬЗОВАНИЕ 
    DELPHI 3 
    Тодд Миллер и Дрвид Пауэл 
    Роланд Бучероу * Джулиан Букнел • Билл Кертис • Скотт Фролич Джо Хечт • 
Чейм Крауз • Марк Причард • Ноэль Раис • Дж. Райдер Квентин Серефинчен • Стив 
Шафер • Эрик Абер 
    Диалектика Киев- Москва 
    1997 

5

    ББК 32.973-01 М60 
    Издательство "Диалектика" Зав. редакцией С.И. Тригуб 
    Перевод с английского С.В. Кравчука, канд. техн. наук И.В. Красикова, В.В. 
Попова, В.В. Репецкого, Н.М. Ручко, А.И. Фшцука, Я.К. Шмидского 
    Под редакцией В.Г. Касперовича, канд. техн. наук И.В. Красикова Общая 
редакция В.Г. Касперовича 
    По общим вопросам обращайтесь в издательство "Диалектика" в Киеве по 
телефонам: 261-5936, 261-5643, факс 227-1456 
    Internet: marin@dcp.kiev.ua, http://www.dcp.kiev.ua 
    Для оптовых закупок и заказов по почте: diamail@dcp.kiev.ua 
    либо 
    в России: Москва-419, 117419, а/я 10, тел./факс 955-5288, 955-5397 в 
Украине: Киев-6, 252006, а/я 100, тел./факс 268-6027, 230-2667, 261-9287 
    Миллер, Тодд, Пауэл, Дэвид и др. 
    М60      Использование Delphi 3. Специальное издание. : Пер. с англ. — К. 
: Диалектика, 1997. — 768 с. : ил. — Парад, тит. англ. 
    ISBN 966-506-092-9 (рус.) 
    В данной книге излагаются теоретические положения программирования в 
Delphi 3 и приводятся практические примеры. Здесь подробно освещаются способы 
создания приложений, программирование баз данных, разработка и создание 
компонентов. Особое внимание уделяется работе с технологиями OLE и ActiveX. 
Кроме того, подробно рассматриваются аспекты программи рования в 16- и 
32-разрядной среде Windows, включающие работу с графикой, процесс печати и 
разработку многопоточных приложений. В связи с возросшей популярностью сети 
Internet в книгу включена глава, посвященная разработке Web-сервера. 
Сертифицированные компанией Borland специалисты поделятся с вами 
профессиональными приемами отладки приложений в Delphi 3, секретами 
совместного использования кода Delphi и C++, а также тонкостями 
программирования в Windows API. 
    Книга рассчитана на программистов высокой квалификации. 
    ББК 32.973-01 
    Все названия программных продуктов являются зарегистрированными торговыми 
марками соответствующих фирм. 
    Никакая часть настоящего издания ни в каких целях не может быть 
воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, 
будь то электронные или механические, включая фотокопирование и запись на 
магнитный носитель, если на это нет письменного разрешения издательства QUE 
Corporation, 1997. 
    Authorized translation from the English language edition published by Que 
Corporation Copyright ©1997 
    All rights reserved. No part of this book may be reproduced or transmitted 
in any form or by any means, electronic or mechanical, including photocopying, 
recording or by any information storage retrieval system, without permission 
from the Publisher. Russian language edition published by Dialektika Computer 
Publishing. Copyright© 1997 
    ISBN 0-7897-1118-4 (англ.) 
    © QUE Corporation, 1997 
    ISBN 966-506-092-9 (рус.)                                                  
                                                                               
                                                                               
           * 
    © Киев, издательство "Диалектика" , 1997 

6

    Об авторах 
    Авторы 
    Тодд Миллер (Todd Miller) — профессиональный программист с более чем 
четырехлетним стажем. Получив диплом бакалавра компьютерных наук в 
Калифорнийском государственном университете, Тодд начал свою карьеру в отделе 
технического сопровождения продукта dBASE фирмы Borland International в 
должности младшего инженера. Теперь он старший консультант в отделе 
технического сопровождения Delphi. Тодд работал с системой Delphi, начиная с 
версии Delphi 1, и является сертифицированным специалистом по Delphi 
Client/Server. Он живет в Скотс-Велли, штат Калифорния, с женой Джойс и двумя 
детьми и больше всего на свете любит компьютерные игры и прогулки по пляжу. С 
ним можно связаться по электронной почте CompuServe: 71333,2144. 
    Дэвид Пауэл (David Powell) — сертифицированный специалист по Delphi 
Client/Server, работает старшим инженером в отделе технического сопровождения 
Delphi фирмы Borland International. Получил диплом бакалавра в области 
компьютерных наук в университете Сан-Джоуса. С появлением системы 
программирования Turbo Pascal 3 программировал на языке Pascal. Интересы 
Дэвида в области программирования весьма широки: от графических программ для 
страховых компаний до систем реального времени для военно-воздушного флота. 
Дэвид живет в Скотс-Велли, штат Калифорния, с женой Кариной и двумя сыновьями. 
С ним можно связаться по электронной почте CompuServe: 76711,1441. 

    Соавторы 

    Роланд Бучероу (Roland Bouchereau) — инженер-консультант фирмы Borland 
International. Его профессиональный стаж в области компьютерных технологий 
составляет 14 лет. Специалист в программировании баз данных Client/Server. 
Работал сетевым администратором и разработчиком в системах A/R и А/Р. Живет в 
Кэмпбелле с женой Мишель и двумя дочерьми. Связаться с ним можно по 
электронной почте CompuServe: 75300,1734. 
    Джулиан Букнел (Julian Bucknall) утверждает, что начал программировать 
чуть ли не с пеленок, но зарабатывает этим на жизнь только последние 18 лет. 
Возглавляет отдел разработки инструментальных средств фирмы TurboPower 
Software и своей известностью обязан собственному вкладу в проектирование, а 
также в разработку компонентов, программного кода, документации и отладку 
всех продуктов Delphi, включая Orpheus, Async Professional for Delphi, 
SysTools и FlashFilter. Он посвящает программированию все свое свободное 
время, оставаясь при этом еще и актером-любителем. Джулиан хотел бы выразить 
благодарность Джефф Райли (Jeff Riley) за хорошее к нему отношение (несмотря 
на задержку главы), Cкоту Орфею — за его крепкий сон на компьютерной мышке во 
время работы над главой и Донне — за то, что она прочла главу, но при этом не 
поняла ни слова. С Джулианом можно связаться по электронной почте 
CompuServe: 100116,1572. 
    Билл Кертис (Bill Curtis) — старший инженер отдела технического 
сопровождения SQL Links/Connectivity. Свою энергию он направил на работу с BDE 
и SQL Links фирмы Borland, программирование и проектирование баз данных, а 
также на программное обеспечение и системные особенности технологии 
Client/Server. Билл просто помешан на компьютерах и компьютерны х технологиях. 
Но иногда его можно увидеть в качестве садовника или кинозрителя. Билл живет в 
Санта-Крусе, штат Калифорния, со своей будущей женой. 


7

    Скотт Фролич (Scott Frolich) — инженер-консультант фирмы Borland 
International, работающий в отделе технического сопровождения Delphi. 
Специализируется на разработке компонентов баз данных Delphi, BDE, BDE API, 
InterBase и SQL. Скотт работает с Delphi с середины 1994 года. Он окончил 
Калифорнийский государственный университет и имеет диплом бакалавра в области 
компьютерных наук. Свое свободное время он делит между велосипедным спортом, 
бегом и видеоиграми. Со Скоттом можно связаться по электронной почте 
CompuServe: 74431,257. 
    Джо Хечт (Joe Hecht) работает в издательской индустрии с 1976 года и в 
течение последних 12 лет является главным архитектором многих графических 
устройств и драйверов печати как для DOS, так и для Windows. Сейчас он 
работает в группе технического сопровождения Delphi фирмы Borland 
International. Его адрес в Internet — joehecht@gte.net, а в 
CompuServe — 70714,1353. 
    Марк Причард (Mark Pritchard) с раннего возраста писал приложения на базе 
GUI и преуспел в области проектирования интерфейсов и 
объектно-ориентированного программирования. Сейчас он возглавляет компанию, 
специализирующуюся на разработке и создании программ для конечного 
пользователя на языках Delphi, C++, С и VB. С Марком можно связаться по 
Internet: pritchardma@ozeniail.com.au. 
    Чейм Крауз (Chaim Krause) работает инженером в группе технического 
сопровождения Delphi фирмы Borland International. Помимо компьютеров и 
компьютерных игр, Чейм интересуется военной историей. Большую часть своего 
времени он проводит перед дисплеем компьютера и общается с людьми, в основном 
по электронной почте. Его адрес в Internet — chaim@chaim.c om. 
    Ноэль Раис (Noel Rice) — программист, работающий в отделе технического 
сопровождения Delphi фирмы Borland International. Играет на гитаре и 
синтезаторе, яхтсмен. Живет в Аптосе, штат Калифорния. С ним можно связаться 
либо по почте (nrice@iix.netcom), либо через Internet (pwl.netcom.com/~nrice/home.html). 
    Дж. Райдер (J. Rider) -- старший программист-аналитик компании 
Pragmatics, Inc., McLean, VA, в которой он разрабатывал медицинское 
библиографическое программное обеспечение для Национальной библиотеки медицины 
в системе Delphi Client/Server. До работы в Pragmatics занимался разработкой 
систем на различных языках программирования. Кроме того, преподает технологию 
информационных систем в колледжах Северной Виргинии и занимается решением 
проблемы запросов в Delphi в качестве члена команды технического сопровождения 
Delphi фирмы Borland. Живет с семьей в Херндоне, штат Виргиния. Его 
электронный адрес — 10001.4652@compuserve.com. 
    Квентин Серефинчен (Quentin Sarafinchan) работал в фирме Borland в отделе 
технического сопровождения Delphi. Отдает предпочтение телекоммуникации и 
графике, в основном анимации. Сейчас Квентин работает по контракту в Канаде 
(где не упускает возможности заняться горнолыжным спортом) и живет с семьей в 
Эдмонтоне. 
    Стив Шафер (Steve Schafer) — доцент факультета физики Государственного 
университета в Оклахоме. Преподает курсы лазерной техники, оптики и общей 
физики и занимается научными исследованиями в области взаимодействия света с 
биологическими материалами. До этого работал в медицинской промышленности. В 
возрасте 11 лет Стив написал свою первую компьютер нуюпрограмму (на языке 
Fortran II), которая "повесила" школьную большую ЭВМ. С тех пор компьютер 
прочно занял место в его сердце. С 1985 года Стив работал в системе 
Turbo/Borland/Pascal, а в 1991 году стал членом группы технического 
сопровождения Delphi фирмы Borland. Он регулярно участвует в конференциях на 
CompuServe по темам DELPHI и BDELPHI32 . С ним можно связаться по адресу 
767111.522@compuserve.com или pandeng@telepath.com. 
    Эрик Абер (Eric Uber) — инженер отдела гарантии качества Delphi-продуктов 
фирмы Borland. Ранее работал старшим инженером группы технического 
сопровождения Delphi, одновременно оказывая услуги команде технического 
сопровождения системы C++ Builder. Еще раньше работал в компании Ellipsys 
Technologies, разрабатывая экспертные системы для телефонной идустрии. Эрик 
является соавтором других проектов издательства QUE. Увлекается велосипедным 
спортом. С ним можно связаться по адресу ezee@compuserve.com. 


8

    Технические редакторы 

    Дэвид Риппи (David Rippy) — менеджер компании Ensemble Corporation, 
специализирующейся на проектировании и разработке приложений для систем 
Client/Server и Internet. Дэвид пишет статьи для журнала Delphi Informant и 
часто выступает с докладами на промышленных конференциях. С ним можно 
связаться по адресу в CompuServe: 74444,415. 
    Ален Тэдрос (Alain Tadros) — старший инженер отдела гарантии качества 
Delphi-продуктов, специализирующийся на COM, OLE и технологиях ActiveX. Алену 
представилась возможность написать несколько программных блоков во время 
разработки ActiveX Framework в Delphi 3.0. Он работал в разных отделах фирмы 
Borland, в том числе в группах технического сопровождения Delphi и C++. Ален 
писал статьи для ведущих журналов и участвовал в создании Web-страниц сервера 
фирмы Borland, посвященных технологиям COM, OLE, ActiveX и разработке 
приложений с помощью C++ и Delphi. Ален живет в Скотс-Велли, штат Калифорния, 
с женой Джессикой и котом Делфи. С ним можно связаться по Internet: atadros@wpo.borland.com. 


9

    Отзывы, пожалуйста! 
    Мы всегда рады получить отзывы от читателей, способствующие повышению 
качества нашей литературы. Отбрасывая в сторону все условности, мы 
действительно хотели бы знать, что вам понравилось (или не понравилось) в этой 
и других книгах нашего издательства. 
    Просьба направлять комментарии, предложения и пожелания по адресу: 
    The Expert User Team E-mail: euteam@que.mcp.com 
    CompuServe: 72410,2077 Fax:(317)581-4663 
    Наш почтовый адрес: The Expert User Team Que Corporation 201 West 103rd 
Street Indianapolis, IN 46290-1097 
    Наш адрес в World Wide Web: http://www.mcp.com/que/developer_expert 
    Заранее благодарны за поддержку и сотрудничество. 
    От издательства "Диалектика" 
    Издательство будет признательно читателям за все критические замечания, 
выявленные ошибки и пожелания и просит присылать их по адресу: 252005, Киев-5, 
а/я 152, 
    "Диалектика" или электронной почтой: marin@dcp.kiev.ua. 
    По традиции, самые активные и дотошные получат приз — лучшие книги нашего издательства. 


10

    ЧАСТЬ      I 

    Основные положения 

    1. Что нового в Delphi 3 

    2. Интегрированная среда Delphi 

    3. Object Pascal: основные понятия 

    4. Object Pascal: углубленное изложение 

    5. Обработка исключительных ситуаций 

11

    Что нового в Delphi 3 

    ГЛАВА     1 

    Марк Причард 


    Возможности Delphi 

    Здесь представлены мощные ресурсы Delphi, находящиеся в вашем распоряжении. 

    Новшества Delphi 3 

    В новой версии продукта фирмой Borland учтены пожелания пользователей. 

    О чем вы узнаете из этой книги 

    Экскурс по темам, рассматриваемым в книге. Данный раздел будет полезен для 
тех, кого интересует конкретный вопрос и кто заранее хочет знать о содержимом 
каждой главы. 



    Примите мои поздравления! Открыв Использование Delphi 3, специальное 
издание, вы сделали первый шаг в мир самой новой и самой поразительной версии 
Delphi! Delphi 3 предоставляет мощные и гибкие средства разработки приложений, 
которые сочетают в себе как великолепный интерфейс визуального проектирования, 
так и значительно доработанную объектно-ориентированную версию языка Pascal. 
Delphi 3 позволит вам за удивительно короткое время создать Win32-coвместимые 
приложения, которые смогут "похвастаться" быстротой выполнения, интуитивностью 
и устойчивостью к ошибкам. 
    Компания Borland действительно выполняет свои обещания. Мы гарантируем, 
что, как только вы установите новую версию Delphi и приступите к испытанию ее 
возможностей, ваше лицо озарится выражением полнейшего удовлетворения! У вас 
возникнет ощущение, что никогда раньше жизнь не была такой прекрасной! Delphi 
3 с ее новыми шаблонами кода и новыми средст вами просмотра значений 
переменных (всплывающими значениями), а также с молниеносным компилятором и 
компоновщиком — это именно та среда разработки, о которой вы мечтали. 
    Скептики подумают: "Конечно, чтобы продать книгу, вы еще и не такие слова 
найдете для рекламы этого продукта". Но Delphi действительно не нуждается в 
протекции с нашей стороны — профессионалы и обычные пользователи уже успели по 
достоинству оценить предыдущие версии Delphi. Например, журнал PC Magazine 
присвоил Delphi свой "знак качества" (Technical Excellence) в категории 
средств разработки (Development Tools), a ComputerWorld на основании опроса 
покупателей назвал Delphi продуктом высшей марки. Даже в публикациях, 
посвященных конкурентам Delphi, этому продукту дается довольно высокая оценка— 
журналом Visual Basic Programmers Journal Delphi присуждена награда Editor's 
Choice. Все, кто имеют доступ к Internet, могут взглянуть на многочисленные 
знаки отличия Delphi, обратившись по адресу http://www.borland.eom.delphi/delaward.html. 
    Возможно, найдется читатель, который усомнится в том, что для освоения 
Delphi 3 нужна именно эта книга. Если подобные сомнения возникли и у вас, 
просмотрите (хотя бы бегло) биографии авторов. Профессиональный уровень ав

12

торского коллектива послужит самым веским доводом в пользу выбора этой 
книги. Достаточно сказать, что ведущие авторы книги — Тодд Миллер (Todd 
Miller) и Дэвид Пауэл (David Powell) — работают старшими консультантами в 
отделе технического сопровождения Delphi. Их соавторы тоже, знаете ли, не 
лыком шиты. Все они на Delphi собаку съели, а некоторые — даже не одну 
(подробности — в биографиях). 

    ПРЕДОСТЕРЕЖЕНИЕ 

    Авторы этой книги не ставили своей целью преподать основы 
программирования. Предполагается, что читателю знакомы понятия переменная, 
функция и цикл. Если у вас есть опыт работы с такими языками, как C++ и Visual 
Basic, то, изучив вводные главы, вы легко разберетесь в основах 
программирования на Delphi. А если вы уже набили руку при работе с языком 
Pascal или программировали в предыдущих версиях Delphi, то у вас вообще не 
возникнет проблем при чтении этой книги. 


    Отличительные особенности Delphi 


    Delphi — это не просто редактор и компилятор. Это могучая среда 
разработки, значительно облегчающая вашу участь как разработчика приложений. 

    Настраиваемая среда разработки 

    В течение многих лет нас вполне устраивали традиционные средства 
программирования, включающие редактор, компилятор и отладчик. 
Windows-ориентированные системы разработки добавили к этому набору визуальные 
методы создания интерфейса программ и автоматическую генерацию 
соответствующего программного кода. Delphi, вобрав в себя все эти черты, идет 
еще дальше. Например, Open Tools API (Application Programming Interface — 
интерфейс прикладного программирования) позволяет писать такие утилиты, 
например эксперт автосохранения (auto-save expert), которые включаются в 
интегрированную среду разработки Delphi (Integrated Development Environment, 
или IDE). Open Tools API посвящена глава 29, "Работа с и нтерфейсом Open Tools API". 

    Объектная ориентация 

    Такие языки, как Visual Basic, являются псевдообъектно-ориентированными — 
они используют объекты и методы, но не поддерживают основных концепций 
объектно-ориентированно программирования, таких как инкапсуляция, наследование 
и полиморфизм. Delphi лишена этого недостатка. Это настоящий 
объектно-ориентированный язык, который позволяет объединять данные и код в 
один класс (инкапсуляция), создавать дочерние классы (наследование) и 
обращаться с классами-потомками, как с родительскими классами (полиморфизм). 

    Библиотека компонентов 

    Возможно, вы обратили внимание на то, что элементы экрана, составляющие 
приложения Windows, довольно просты. Возьмем в качестве примера стандартную 
кнопку — обычно она представлена в виде выступающего серого прямоугольника, на 
поверхности которого написан текст, соответствующий назначению данной кнопки. 
Delphi "берет" функциональность кнопки — ее способность отвечать на щелчок 
мышью и отображать некоторый текст — и "подает" ее в виде объекта, известного 
как компонент. Компоненты хранятся в библиотеке компонентов, содержащей все 
объекты, необходимые для создания полноценных программ, использующих интерфейс Win32. 
    Объектно-ориентированная природа Delphi делает библиотеку компонентов 
необычайно гибкой. Если вам требуется дополнительная функциональность либо вы 
хотите модифицировать поведение компонента, наследуйте новый компонент из 
того, который уже хранится в библиотеке, и добавьте немного "отсебятины"! 

    Поддержка OCX и ActiveX 

    Delphi поддерживает объекты, которые создаются с помощью других языков 
(например, C++) на основе стандарта OCX. OCX-объекты чаще всего поставляются 
независимыми компаниями, разрабатывающими программное обеспечение, 
удовлетворяя при этом широкому спектру потребностей сегодняшних компьютерных 
пользователей: от Web-броузеров до "озвученных" электронных таблиц и 
банальных программ проверки орфографии. ActiveX представляет собой измененную 
модель OCX и принят как стандарт для подключаемых объектов, особенно это 
касается броузеров Internet. Благодаря способности Delphi создавать объекты 
ActiveX и манипулировать ими вы получите мощность Internet, о которой так 
давно мечтали. 

    Глава 1. Что нового в Delphi 3 13 

    Шаблоны 

    Теперь, когда вы подумали, что программирование отныне будет заключаться в 
простом манипулировании компонентами и объектами OCX (а бьющую ключом энергию 
можно направить в другое русло), на арену выходят шаблоны, которые даже эту 
задачу делают тривиальной! Delphi оперирует четырьмя типами шаблонов: формами, 
приложениями, компонентами и кодами. Шаблоны формы, приложения и компонента 
дают возможность повторно использовать созданные ранее коллекции объектов либо 
в отдельных программах, либо в качестве основы для новой программы. Шаблон 
кода — это новое средство, которое значительно уменьшает потребности во вводе 
повторяющихся фрагментов кода. (Подробности — в разделе данной главы 
"Новшества Delphi 3"). 

    Полная компиляция 

    Многие системы разработки приложений для Windows генерируют 
код-полуфабрикат, или р-код, который не может быть выполнен процессором без 
дополнительной трансляции во время работы самой программы, что существенно 
снижает производительность компьютера. Попробуйте-ка представить себе потери 
времени процессора при преобразовании графических файлов! Delphi же 
использует настоящий компилятор и компоновщик и генерирует стопроцентный 
машинный код. Такая реализация лишена непроизводительных затрат, что особенно 
важно для супермасштабных программ сегодняшнего дня, которые требуют наличия 
высокопроизводительных систем! 
    Использование стопроцентной компиляции дает еще одно преимущество, 
заключающееся в создании библиотек динамической компоновки (DLL), которые 
могут содержать любые компоненты из библиотеки компонентов. Затем эти 
библиотеки вы сможете использовать в своих собственных приложениях Delphi или 
распространять как независимые компоненты для других программ. 

    Устойчивость к ошибкам 

    Если вам приходилось программировать на других языках, вы, вероятно, 
сталкивались с необходимостью обработки ошибок и защиты ресурсов. Прежний 
подход к решению этих задач состоял в выполнении функции с последующим 
анализом результата. В случае получения кода успешного завершения операции 
выполнялись некоторые действия и вновь анализировался результат. Этот процесс 
продолжался до тех пор, пока не исчерпывался исходный код вашей программы. 
Delphi искусно справляется с проблемой обнаружения ошибок благодаря реализации 
концепции исключительных ситуаций. Вместо того чтобы работать в предположении, 
что каждый ваш шаг может привести к сбою, потенциальное выявление которого 
требует соответствующего тестирования, Delphi позволяет писать программу, 
исходя из успешного выполнения всех ее операторов. В случае возникновения 
отказа Delphi вызывает исключительную ситуацию, которая перехватывается 
одним-единственным обработчиком исключительных ситуаций. Такой подход 
позволяет вашей программе достойно справиться с ошибкой, причем от вас в этом 
случ ае требуются минимальные усилия, да и клавише <ТаЬ> станет легче жить. 

    Доступ к данным 

    Вряд ли среди вас найдется много программистов, которые никогда не писали 
приложений баз данных. Статистика утверждает, что большинство ваших приложений 
так или иначе связано с базами данных. И это неудивительно, ведь где еще 
компьютеру показать себя во всей красе, как не в области сбора, обработки и 
представления данных. Если данных много (или очень много), разработчики 
используют для их хранения именно базы данных. Delphi предоставляет в ваше 
распоряжение объекты и компоненты, которые значительно уменьшают ваши трудовые 
затраты на создание такого рода приложений. Хотите верьте, хотите — нет, но с 
помощью Delphi можно создать программу ведения баз данных, не написав ни 
строки программного кода! 

    Новшества Delphi 3 

    В последней версии Delphi содержится невероятное количество новых 
возможностей, которых хватило бы на целую книгу или на жесткий диск пятилетней 
давности. Покрепче ухватитесь за свое кресло и приготовьтесь: через мгновение 
вы вместе с нами перенесетесь в удивительный мир Delphi 3. 

    14 Часть I. Основные положения 


    Что нового в IDE 

    Самые заметные изменения в интегрированной среде разработки (IDE) связаны 
с введением средства посмотри и попробуй (look-and-feel) приложения Internet 
Explorer с его великолепными кнопками. Описанные далее дополнения больше 
связаны с практической стороной, нежели с элегантностью внешнего представления. 

    Средства поддержки процесса отладки DLL 

    Предыдущие версии Delphi не поддерживали интегрированной отладки библиотек 
динамической компоновки (DLL), поскольку последние не являются независимыми 
программными единицами и загружаются только по требованию приложения. В Delphi 
3 вы можете проследить обращения выполняемого кода к новой библиотеке DLL в 
интегрированном отладчике. (Подробности отладки DLL описываются в главе 27.) 

    Расширение возможностей редактора кода 

    Новые черты редактора кода рассматриваются в следующих разделах. 

    Дополнительные поля 

    Окно редактора кода (Code Editor) содержит дополнительные поля (gutters), 
которые представляют собой области, содержащие мнемонические символы, например 
точки прерываний и тела процедур. Такие поля позволяют редактору корректно 
обрабатывать позиции символов вместо резервирования первого столбца для 
отображения специального символа. 

    Подсказки при вычислениях 

    Если раньше приложения использовали всплывающие подсказки (маленькие 
окошки с текстом, появляющиеся над объектом, если указатель мыши замирал на 
нем в течение некоторого времени) для краткого разъяснения назначения объекта, 
например кнопки, то теперь редактор кода использует ту же концепцию для 
отображения динамического значения переменной или свойства (при размещении на 
нем указателя мыши). 

    Шаблоны кода 

    Появление шаблонов кода заслуживает особого внимания. Сколько раз вы 
вводили одни и те же программные конструкции, например if. . .then. . .else 
или for. . .do? Шаблоны кода отныне автоматизируют эту задачу, экономя ваше 
время и силы, особенно если процесс ввода не доставляет вам большого 
удовольствия. Использование шаблонов кода описано в главе 2 , "Интегрированная 
среда Delphi". 

    Поддержка многобайтовых символов 

    С ростом популярности Internet глобальное распространение вашего 
приложения уже не является задачей далекого будущего. Идя навстречу вашему 
желанию создавать программы, не ограничиваясь каким-то одним языком, редактор 
кода поддерживает теперь в комментариях и строковых константах многобайтовые символы. 

    Шаблоны компонентов 

    Предыдущие версии Delphi предоставляли пользователям возможность работать 
с шаблонами формы и приложения, которые позволяют в новых проектах повторно 
использовать созданные ими коллекции форм и приложений. В Delphi 3 введена 
концепция шаблона компонента — созданной пользователем группы компонентов, 
которую вы однажды настроили, поместили в хранилище и можете использовать 
сколько душе угодно. Шаблоны компонентов сводят создание стандартных наборов 
компонентов к выполнению одной-единственной операции с мышью. (Подробности— в 
главе 16, "Создание компонентов".) 

    Что нового в VCL и RTL 

    Особенно повезло (в смысле изменений и дополнений) библиотеке визуальных 
компонентов (Visual Component Library — VCL) и библиотеке динамических 
компонентов (Runtime Library — RTL). В следующих разделах рассматриваются 
наиболее полезные элементы, которые должны вас заинтересовать. 

    Новые компоненты 

    Ниже перечислены новые компоненты в VCL Delphi 3, подробно описанные в 
главах 6, "Использование компонентов Delphi", и 7, "Общие элементы управления Win32". 

    Глава 1. Что нового в Delphi 3 15 

    TSplitter 

    Компонент TSplitter позволяет определить прямоугольные области ваших форм, 
размер которых можно будет изменять во время работы программы. Проводник 
Windows (explorer) предоставляет пример использования такой функции: 
перетаскивая центральную разделительную линию влево или вправо, вы изменяете 
тем самым размер областей дерева папок и списка файлов. 
    
    TAnimate 

    Этот компонент представляет собой сокращенную версию компонента 
TMediaPlayer и воспроизводит AVI-файлы (Audio Video Interleaved) в пределах 
своей области отображения. 

    TlmageList 

    Компонент TlmageList, включенный в предыдущие версии Delphi, теперь 
является общедоступным в библиотеке компонентов. Он позволяет эффективно 
сохранять большую коллекцию растровых изображений. 

    TToolbar 

    В приложениях, созданных с помощью предыдущих версий Delphi, для 
разработки панели инструментов использовался компонент TPanel. В Delphi 3 
компонент TToolbar не просто заменяет компонент TPanel, но и наделяет его 
новыми полезными функциями, характерными для панелей инструментов. 

    TCoolBar 

    Если вам нравятся панели инструментов приложения Internet Explorer, то вы 
по достоинству оцените компонент TCoolBar, с помощью которого можно без труда 
включить в свое приложение Delphi "крутые" панели инструментов Internet Explorer. 

    TOpenPictureDialog и TSavePictureDialog 

    Эти компоненты представляют диалоговое окно открытия или сохранения файла 
с возможностью предварительного просмотра графического изображения, что 
особенно полезно при загрузке или сохранении графических файлов. 

    Компоненты Internet 

    Эта группа состоит из большого количества компонентов, которые значительно 
облегчают разработку приложений, связанных с работой в Internet. Благодаря 
компонентам, отвечающим за поддержку протоколов HTTP, HTML, FTP, NNTP, POP, 
SMTP, TCP и UDP, программирование протоколов высокого уровня у вас не вызовет 
проблем. Если ваши потребности выходят за рамки этого списка, попробуйте 
добавить компоненты, обеспечивающие работу в режиме клиента и сервера, и 
получите возможность создания приложений — серверов Internet! Подробное 
описание компонентов Internet вы найдете в главе 28, "Создание приложений для 
Web-сервера"'. 

    Модифицированные компоненты 

    В Delphi 3 модифицированы объекты, которые пользовались популярностью у 
пользователей предыдущих версий Delphi. 

    TSpeedButton 

    Добавлено новое свойство Flat. Если оно установлено равным True, компонент 
TSpeedButton поведет себя подобно кнопкам Web-броузера Microsoft Internet Explorer. 

    TFont 

    Частично отвечая за поддержку многобайтовых символов, объект TFont 
обзавелся свойством Chartset, которое задает набор символов шрифта. 

    TCanvas 

    Программирование графики в многопоточном приложении было сопряжено с 
определенными трудностями— для прорисовки объекта TCanvas приходилось 
использовать метод Tthread.Synchronize. В Delphi 3 с целью упрощения этой 
задачи в объект TCanvas введено два новых метода: Lock и UnLock. Метод Lock 
предоставляет монопольный доступ к поверхности рисования объекта TCanvas, a 
UnLock отменяет его. 

    Что нового в компиляторе 

    Не считая изменений, необходимых для поддержки новых возможностей VCL и 
RTL, в компиляторе реализованы следующие функции. 

    16 Часть I. Основные положения 


    Assert 

    Включение процедуры Assert является идеальной реализацией прецедента под 
девизом "За спрос не бьют". Эта процедура вызывает исключительную ситуацию, 
если некоторое логическое выражение ложно. Она используется главным образом 
тогда, когда перед выполнением фрагмента кода необходимо убедиться в 
существовании определенного условия. 

    Поддержка пакетов 

    Одним из преимуществ использования Delphi является создание независимого 
выполняемого файла, не нуждающегося во время работы программы в библиотеках 
динамической компоновки (DLL). К недостаткам же нужно отнести тот факт, что 
каждое приложение включает свою собственную копию библиотеки визуальных 
компонентов (VCL). В Delphi 3 введено понятие пакета — набора компонентов и 
объектов, скомпилированных в общую библиотеку DLL. Использование общей 
библиотеки компонентов уменьшает как время доступа к памяти, так и время 
загрузки. Но одно но все же остается: при распространении своей программы вам 
придется включать в поставку и пакет DLL. 

    Логическая совместимость с Visual Basic 

    Благодаря способности Delphi создавать библиотеки DLL и элементы 
управления ActiveX вы можете ощутить необходимость в интерфейсе с программами, 
написанными на языке Visual Basic (VC). Для приведения в соответствие с 
требованиями Visual Basic таких логических типов данных Delphi, как ByteBool, 
WordBool и LongBool, их значение True, равное 1. заменяется значением -1. 
False остается равным 0. Базовый логический тип данных Boolean не изменяется и 
продолжает представлять значения True и False равными 1 и 0 соответственно. 

    WideSpring 

    Тип WideSpring, который введен для поддержки многобайтовых символов, 
сохраняет 16-разрядные символы Unicode и ведет себя аналогично стандартному 
типу String (он характеризуется динамическим распределением памяти и наличием 
завершающего нуля). 

    Что нового в OLE 

    Поддержка OLE потребовала серьезной доработки Delphi 3. Поддержка OLE 
теперь включает модель Component Object Model (COM) и функции ActiveX. Новая 
классовая структура ActiveX позволяет легко создавать СОМ-серверы, элементы 
управления ActiveX, страницы свойств ActiveX, а также невизуальные серверы 
автоматизации OLE. Эти объекты затем можно использовать в таких приложениях, 
как Internet Explorer, Delphi, C++, Visual Basic и IntraBuilder. 

    Что нового в поддержке баз данных 

    Delphi всегда обладала мощным потенциалом в сфере создания баз данных и 
управления ими. В версии 3 пересмотрена структура поддержки программирования 
баз данных и реализовано много новых возможностей. 

    Распределенные наборы данных 

    Модель наборов данных в предыдущих версиях Delphi связывала 
приложение-клиент с базой данных через систему доступа к базам данных фирмы 
Borland (Borland Database Engine, или BDE), что означало включение в 
приложение некоторого кода, предназначенного для взаимодействия с полной BDE, 
даже если программе требовалась лишь небольшая часть функций BDE. Delphi 3 
вводит концепцию распределенного набора данных, который взаимодействует со 
всеми типами баз данных в режиме клиент/сервер, т.е. приложение-клиент 
сохраняет локальную копию таблицы и просто пересылает модификации на сервер. 
Благодаря этому упрощению вашей программе требуется поддержка только одного 
объекта клиента, инкапсулированного в новый объект TMemoryDataSet. Весь 
остальной код остается в распоряжении BDE, которая используется параллельно 
работающими приложениями. А если вы успели ужаснуться при мысли о 
необходимости модифицировать весь ваш программный код, пожалуйста, успокойтесь 
— такие компоненты, как ТТаblе, TQuery и другие, уже обновились, чтобы отразить 
новую структуру, и полностью совместимы с существующим кодом. 

    Усовершенствование объекта TDataSet 

    Для обеспечения поддержки новой структуры распределенных наборов данных 
были доработаны объект TDataSet и связанные с ним модули DB и DBTABLES. 
Функции, относящиеся к работе с BDE, были переданы из класса TDataSet в класс 
TBDEDataSet и из модуля DB в модуль DBTABLES. 

    Глава 1. Что нового в Delphi 3 17 


    Дополнительная поддержка формата 

    Новая система доступа к базам данных фирмы Borland (BDE) включает драйверы 
для баз данных FoxPro и Access. Провайдеры баз данных OLE автоматически 
принимают облик индивидуальных драйверов BDE. 

    Расширение Database Explorer 

    Database Explorer поддерживает сейчас DB2 и Informix. Вы можете 
редактировать определенные объекты SQL, такие, как виды и хранящиеся 
процедуры, пакеты Oracle и генераторы Interbase, а также вызовы исключительных 
ситуаций. Если вы запускаете Database Explorer из Delphi, то для 
редактирования операторов SQL можно использовать генератор кода. Delphi 
поддерживает хранящиеся процедуры в виде источника операции перетащить и 
опустить — достаточно перетащить процедуру из Database Explorer и опустить ее 
в форме, отображаемой в проектировщике форм (Form Designer), автоматически 
создав при этом компонент TStoredProc. Более детально возможности Database 
Explorer рассматриваются в главе 12, "Использова ние генератора отчетов". 

    Что вы найдете в этой книге 

    В этой книге рассматриваются перечисленные ниже темы. 

    Среда разработки Delphi 

    Глава 2, "Интегрированная среда Delphi", познакомит вас с интегрированной 
средой разработки (Integrated Development Environment — IDE). Мы проведем вас 
через огромное множество опций меню, чтобы вы постигли масштабы этой среды 
разработки. Вы узнаете о трех самых распространенных средствах, используемых 
при разработке приложений: инспекторе объектов (Object Inspector), редакторе 
кода (Code Editor) и проектировщике форм (Form Designer). После этого мы, шаг 
за шагом, чтобы практикой подтвердить теорию, пройдем через все этапы создания 
вашего первого приложения Delphi. Завершает главу информация о менеджере 
проектов (Project Manager) и хранилище объектов (Object Repository) — двух 
средствах, позволяющих повысить производительность вашей работы. 

    Язык Object Pascal 

    Язык Object Pascal лежит в основе любой Delphi-программы. 
    Ш Глава 3, "Object Pascal: основные понятия", обнажает "корни" Delphi, 
благодаря чему вы сможете понять, что роскошные "ветви" этой системы быстрой 
разработки приложений исходят из основополагающих принципов языка Object 
Pascal, которые заключаются в структурировании, определении области видимости 
и простоте синтаксиса. Вы узнаете о возможности хранения информации "под 
вывеской" различных типов данных, о формировании сложных выражений путем 
объединения данных с операторами, об управлении выполнением выражений с 
помощью структурированных операторов, а также о том, как достичь модульности 
создаваемых программ, используя функции, процедуры и модули. 
    • В главе 4, "Object Pascal: углубленное изложение", вы перейдете от 
начальных сведений о языке Object Pascal к концепции объектно-ориентированного 
программирования. Здесь рассказывается, как создавать классы из полей, методов 
и свойств и как использовать самые "лакомые кусочки" библиотек, поставляемых 
вместе с Delphi. 

    Обработка ошибок и защита ресурсов 

    Глава 5, "Обработка исключительных ситуаций", посвящена эффективным 
средствам обнаружения и исправления ошибок. Здесь подробно рассматриваются 
операторы try. . .except и try. . . finally, их применение, а также приводятся 
многочисленные примеры, иллюстрирующие теоретический материал данной главы. 

    Компоненты и элементы управления 

    Библиотека компонентов (Component Library) представляет собой одно из 
самых новых и гибких средств в "репертуаре" Delphi. Ее составные части — 
компоненты и элементы управления — являются предметом рассмотрения следующих 
двух глав. 

    18 Часть I. Основные положения 

    Из главы 6, "Использование компонентов Delphi", вы узнаете, что все 
компоненты библиотеки компонентов делятся на визуальные и невизуальные. 
Сначала мы рассмотрим стандартные свойства этих двух типов компонентов, а 
затем перейдем к специфическим функциям каждого компонента в отдельности. 
    Глава 7, "Общие элементы управления Win32", посвящена таким новым 
элементам управления, как списки пиктограмм (iconic list) и сегментированные 
строки-индикаторы (segmented progress bar), которые "пришли" на наши дисплеи 
вместе с Windows 95. Кроме того, вы познакомитесь с совершенно новыми 
управляющими элементами, например TCoolBar, TToolBar и TAnimate. Благодаря 
примерам программ вы узнаете о назначении их ключевых свойств и методов. 

    Создание приложений 

    В главе 8, "Создание приложений", рассматриваются вопросы, связанные с 
разработкой приложений. Здесь подробно рассказывается о свойствах и событиях 
класса TForm— базовых строительных блоках любого графического приложения. 
"Заложив фундамент", мы перейдем к трем типам приложений — однодокументному 
интерфейсу (Single Document Interface), многодокуме нтному интерфейсу 
(Multiple Document Interface) и консоли (Console). Попутно вы узнаете о 
создании проекта и опциях компилятора, а также познакомитесь с 
программированием малого интерфейса прикладного программирования (API). "На 
десерт" будут поданы некоторые секреты искусства программирования и показаны 
приемы использования некоторых классов. 

    Поддержка баз данных 

    Delphi гостеприимно распахивает двери своего "золотого фонда" компонентов 
работы с данными, превращая программирование баз данных почти в тривиальную 
задачу. И все это достигается благодаря системе доступа к базам данных фирмы 
Borland (Borland Database Engine, или BDE). В следующих главах описаны 
различные аспекты программирования баз данных. 
    • Глава 9, "Работа с локальными базами данных", познакомит вас с 
концепцией баз данных и с такими терминами, как таблица, запись и поле, а 
также со структурой двух простых форматов локальных баз данных: Paradox и 
dBASE. Затем вы узнаете об интерфейсе компонентов Delphi с BDE и более сложных 
функциях BDE, например о средствах кэширования обновлений и транзакциях. 
    • В главе 10, "Работа с базами данных SQL", исходя из предположения, что 
вы усвоили материал главы 9, мы познакомим вас с понятиями языка 
структурированных запросов (SQL), баз данных SQL и серверов SQL, после чего 
рассмотрим преимущества и недостатки использования SQL в целом. Вы узнаете о 
таких SQL-ориентированных компонентах, как TStoredProc и TUpdateSQL, которые 
хранятся в библиотеке визуальных компонентов (VCL). Заключительный раздел этой 
главы посвящен параметрам конфигурации BDE, которые можно использовать для 
повышения производительности сервера SQL. 
    •    В главе 11, "Инструменты для работы с базами данных", рассматриваются 
средства работы с базами данных, поставляемые вместе с Delphi, а именно — 
Database Explorer, Data Dictionary и SQL Monitor. Вы узнаете о возможностях 
каждого из этих средств и способах их применения в процессе разработки своих 
собственных приложений ведения баз данных. 
    •    Из главы 12, "Использование генератора отчетов", вы узнаете о важных 
свойствах и событиях всех компонентов включенной в Delphi 3 версии генератора 
отчетов Quick Reports 2.0 и о том, как использовать мастера быстрых отчетов 
(Quick Reports Wizard) и шаблоны отчетов (Report Template) для построения 
простого списка, отчета по модели главная—подчиненная и почтовых наклеек. 
    •    Глава 13, "Создание пользовательских наборов данных", начинается с 
рассмотрения преимуществ нового виртуального набора данных Delphi TDataSet. 
Класс TDataSet — не новичок в Delphi, но разработчики Delphi модифицировали 
его, чтобы создать условия для построения пользовательских наборов данных. 
Здесь рассматриваются основные методы, которые нуждаются в переопределении, а 
описание концепций подкрепляется построением набора данных, который "знает", 
как получить доступ к текстовым ASCII-файлам с записями фиксированной длины, 
не прибегая к помощи BDE. 
    •    В главе 14, "Построение распределенных приложений", описаны новые 
возможности, открывающиеся в связи с использованием представленной в Delphi 3 
новой технологии удаленных наборов данных, и показано, как применить эти 
наборы данных в Web-приложениях. 

    Глава 1. Что нового в Delphi 3 19 


    Расширение возможностей использования компонентов 

    Компонентная инфраструктура Delphi поражает своими мощными возможностями — 
вы можете взять любой объект и модифицировать или расширить его. 
    • Глава 15. "Работа с пакетами", посвящена концепции пакета— нового 
понятия в Delphi. Вы узнаете, что собой представляют пакеты, где и как они 
используются, а также как их создать и инсталлировать. 
    • В главе 16, "Создание компонентов"', рассматриваются основы создания 
пользовательских компонентов. Прежде всего, вы узнаете, что подразумевается 
под пользовательским компонентом. И если вам нужно будет его создать, то 
данная глава поможет вам правильно выбрать родительский класс, выполнить 
отладку пользовательского компонента и определить для не го пиктограмму в 
палитре компонентов (Component Palette). И, наконец, мы проведем вас через все 
этапы создания и использования пользовательского компонента. 
    • Глава 17, "Сложные компоненты", использует базовые сведения, 
содержащиеся в главе 16, и на их основе позволяет лучше узнать о более сложных 
аспектах написания компонентов. Вы узнаете, как определить состояние своего 
компонента, создать редакторы пользовательских свойств и компонентов, а также 
элементы управления для работы с данными и ответить на пользовательские сообщения. 

    OLE и ActiveX 

    Технология связывания и внедрения объектов фирмы Microsoft (Object Linking 
and Embedding, или OLE) признана как общепринятый стандарт для распространения 
и совместного использования продуктов, в основе функционирования которых лежит 
понятие объекта. ActiveX можно рассматривать в качестве "новой редакции" 
стандарта OLE, которая приобрела популярность благодаря все возрастающему 
использованию Internet. В этой книге вы найдете подробное описание поддержки 
OLE и ActiveX, которая позволит вашей программе удержаться в 
объектно-ориентированном мире коммерческих программных продуктов. Звучит 
невесело? Тогда, может быть, вас заинтересует создание шикарных Web-страниц? 
Так или иначе, "проанонсированный" выше материал включен в следующие главы. 
    •    Из главы 18, "Работа с OLE, серверы документов и элементы управления 
ActiveX", вы узнаете, как создавать, загружать и сохранять объекты OLE в 
процессе разработки и во время работы приложения, а также направлять их в базы 
данных и принимать их оттуда. Кроме того, в главе содержится описание команд и 
методов передачи параметров, поддерживаемых сервером автоматизации OLE. Здесь 
также уделено внимание технологии ActiveX и ее сходству с программированием OLE. 
    • Глава 19, "Работа с интерфейсами СОМ", начинается с рассмотрения основ 
модели Component Object Model (СОМ). Затем здесь приводится пример 
СОМ-сервера, чтобы вы могли получить представление о том, что происходит за 
кулисами внешних событий. Затем мы вернемся к тому же примеру, но на этот раз 
используем новое расширение возможностей интерфейса Delphi и оболочку Delphi 
ActiveX (DAX), которая значительно упрощает разработку СОМ-серверов. Глава 
завершается примером использования оболочки DAX для создания СОМ-сервера, 
содержащего объект Context Menu Shell Extension для Windows 95 и Windows NT 4.0. 
    •    Из главы 20, "Автоматизация OLE", вы узнаете, как получить доступ к 
существующему объекту автоматизации OLE и манипулировать им. Затем вы узнаете 
о создании объектов автоматизации OLE, а также способах предоставления 
информации о библиотеке типов автоматизированным OLE-объектам, чтобы другие 
среды (подобные Visual Basic фирмы Microsoft) могли использовать созданные в 
Delphi объекты автоматизации OLE. 
    В Глава 21, "Создание элементов управления ActiveX", посвящена созданию 
элементов управления ActiveX и Active-форм с помощью новой оболочки Delphi 
ActiveX (DAX). Здесь также исследуется использование DAX в Web-страницах, 
отображаемых с помощью Web-броузера Microsoft Internet Explorer. 

    Графика и печать 

    Delphi поддерживает несколько классов, которые упрощают работу интерфейса 
графических устройств Windows (Graphics Device Interface, или GDI) и позволяют 
рисовать на экране или принтере изображения или текст. Этим темам и посвящены 
следующие две главы. 

    20 Часть I. Основные положения 

    •   Глава 22, "Работа с графикой", охватывает многие аспекты графических 
возможностей Delphi, начиная с таких высокоуровневых объектов рисования, как 
TCanvas, TPen и TBrush, и заканчивая вызовами низкоуровневых функций GDI и 
метафайлами. 
    •   Глава 23, "Печать в Delphi", представляет группу классов GDI и Delphi, 
которые делают обработку графики очень простым занятием. Не успев оглянуться, 
вы попадете в королевство принтеров, и вам откроются многие связанные с ними 
таинства. Вы узнаете, как работают драйверы принтеров и как решаются наиболее 
распространенные проблемы, касающиеся вывода на печать. Кроме того, вы сможете 
поближе познакомиться с представлением цветов на экранах и принтерах, а также 
с приемами печати различных шрифтов. К тому же вы ощутите на себе магическую 
силу класса TPrinter и узнаете, как программным путем можно настроить свой 
собственный принтер. 

    Многозадачные приложения 

    Одним из чудесных дополнений к операционной системе Win32 является 
процесс. Из главы 24, "Работа с подзадачами"', вы узнаете, что собой 
представляют процессы, как они создаются, запускаются и останавливаются и 
когда их следует использовать. Здесь рассказывается, как с помощью нескольких 
методов синхронизации (критических разделов, событий, мьютексов и семафоров) 
добиться совместной работы процессов. Затем мы перейдем к глобальным данным и 
обсудим, как их сделать специфичными для каждого процесса. Преподав теорию 
процессов и "раскрасив" ее конкретной реализацией в Win32, мы завершим главу 
рассмотрением инкапсуляции процессов Delphi на примере класса TThread. 

    Программирование библиотек DLL 

    Библиотека динамической компоновки (Dynamic Link Library, или DLL) в 
течение многих лет являлась частью приложений Windows. Она предоставляет 
функции, которые вызываются по мере необходимости, позволяя вашему приложению 
эффективно использовать главные ресурсы компьютера. Программированию DLL 
посвящены следующие две главы. 
    •    Глава 25, "Программирование DLL: введение", сначала дает общее 
представление о программировании DLL, после чего вы получите более конкретную 
информацию о переходе от операционной системы Win16 к новой среде Win32. Вы 
узнаете, как загружаются библиотеки DLL, как происходит экспортирование и 
импортирование программных блоков, и рассмотрите реализацию в Delphi функции 
DLLMain. 
    •    Глава 26, "Программирование DLL: сложный материал", основываясь на 
сведениях, изложенных в главе 25, повествует о более сложных приемах 
программирования DLL. Здесь вы узнаете, как объявить класс в DLL и как 
использовать экземпляр класса в главном приложении. Будут рассмотрены 
интерфейсные модули и утилита Turbo Dump, фрагменты формата файлов РЕ и 
способы выхода за рамки процесса для совместного использования данных. 

    Тестирование и отладка 

    К сожалению, ни одному из нас еще не удавалось сразу же написать 
приложение, в котором не было бы ошибок. Следовательно, тестирование и отладка 
являются важным этапом разработки приложений, который зачастую не выполняется 
должным образом. В главе 27, "Тестирование и отладка", описаны встроенные 
средства Delphi, которые превращают тестирование и отладку в почти приятное 
занятие. Средства тестирования включают условную компиляцию и организацию 
подтверждений, а процесс отладки становится значительно более легким благодаря 
интегрированному отладчику Delphi (Integrated Debugger). Здесь вы узнаете, как 
устанавливать точки останова, выполнять трассировку кода отлаживаемой 
программы, просматривать значения переменных и использовать другие инструменты 
отладки. Глава завершается разделом, в котором освещаются "грубые" методы 
отладки и приводятся советы на случай, если, несмотря на все ваши усилия, 
программа все-таки сбоит. 

    Работа с Internet 

    В главе 28, "Создание приложений для Web-сервера", рассказывается о 
способе расширения ваших возможностей, позволяющем войти в мир Internet. Вы 
ознакомитесь с основными терминами, связанными с разработкой средств, 
необходимых для работы в Internet, и с технологиями, используемыми при 
создании приложения — сервера Web. Перед вами откроются новые горизонты 
программирования Web-сервера, и вы пройдете через все этапы создания 
расширения, связанного с функциями сервера, использующего стандарт ISAPI. Мы 
покажем, как протестировать и отладить ваше расширение, и завершим главу 
рассмотрением множества компонентов из библиотеки VCL, отвечающих за работу в 
Internet. 

    Глава 1. Что нового в Delphi 3 21 


    Расширение возможностей IDE 

    Интегрированная среда разработки (IDE) не является статическим набором 
средств. Ее можно расширить благодаря использованию интерфейса Open Tools API. 
Глава 29, "Работа с интерфейсом Open Tools API", посвящена услугам, 
предоставляемым функциями API. Вы узнаете, как создать четыре типа экспертов 
IDE. Мы подкрепляем излагаемый материал демонстрацией работы с проектами 
(выполнением загрузки, сохранения, включения и удаления файлов), создаем 
усложненного эксперта, который оказывает воздействие на редактора кода, и 
выполняем сложный поиск в ваших исходных файлах. 

    Сотрудничество с C++ 

    Компилятор Delphi способен генерировать двоичные объектные файлы (с 
расширением OBJ), которые можно использовать для компоновки выполняемого 
файла в других системах разработки (например, в среде C++). В главе 30. 
"Содружество Delphi и C++", описан этот метод интеграции, а для связи C++ и 
Delphi предлагается отдать предпочтение библиотекам DLL. Вы узнаете о 
корректном методе объявления и экспортирования своих функций, а также о том, 
как согласовать типы данных C++ и Delphi. 

    Нетривиальные вызовы функций 

    Кроме функций из стандартных библиотек Delphi, существует два других 
набора функций, которые можно вызывать из ваших приложений. Речь идет об 
интерфейсе Win32 API и библиотеках 16-разрядных функций, которым и посвящены 
следующие две главы. 
    •    Глава 31, "Работа с интерфейсом Windows API", охватывает широкий 
диапазон тем, связанных с программированием интерфейса API, включая 
согласование с Windows API, динамическую компоновку и создание прототипов 
функций.  Здесь вы найдете множество интересных  подробностей: от наложения  
"заплат" на файл Delphi WINDOWS.PAS до создания программного 
кода, предназначенного для работы с беззнаковыми 32-разрядными целыми. 
Наконец, будет приведен пример, в котором для реализации PlayKeys   
используются системные ловушки Windows и функции косвенного вызова (callback 
functions). Благодаря этому мощному дополнительному инструменту 
программирования вы сможете легко отправлять сообщения любому управляющему 
элементу Windows. 
    •    В главе 32, "Катание на санках", рассматривается метод санок 
(thanking), который используется для вызова функций API, написанных для 
архитектур с различными операционными системами. Вы узнаете о трех типах езды 
на санках и рассмотрите пример линейной езды на санках с помощью 
недокументированного метода Win32, называемого QTThunk. 

    Соглашения 

    Читая книгу, вы наверняка обратите внимание на различные стили оформления 
текста. Они выбраны не случайно и несут определенную контекстную нагрузку. 
    •    Моноширинный шрифт, шрифт   с   фиксированной   шириной   символов, 
используется для выделения специфичных для Delphi слов (имен переменных, 
свойств и функций). Этот стиль призван, во-первых, сконцентрировать ваше 
внимание (другими словами, при виде этого стиля ваш остекленелый взгляд должен 
немедленно стать осмысленным) и исключить возможность упущения чего-то 
важного, о чем мы так старались вам поведать. Во-вторых, этот стиль поможет 
вам не спутать идентификаторы с обычными словами английского языка (чтобы вы 
не подумали, не дай бог, что мы, рассыпая по тексту натуральные английские 
слова, подобно графу Л.Н. Толстому с его множественными включениями из 
французского языка в романе "Война и мир", тоже хотим, чтобы вы 
почувствовали дух этого времени. — Прим. перев.). 
    •    Курсив обычно используется при вводе нового термина. 

    22 Часть I. Основные положения 


    Примеры 

    Мы хотим, чтобы эта книга помогла вам освоить Delphi, поэтому наши 
теоретические рассуждения иллюстрируются практическими примерами из реальной 
жизни. Рассматривая самодостаточные темы программирования, которые не связаны 
очевидным образом с реальным миром, мы ограничиваемся программными примерами, 
которые легко отличить от остального текста. Они имеют следующий вид: 

    { Это  комментарий  для  следующего   кода. } 
    if  VisualBasicInstalled and DelphiHasNotBeenUsed  then 
		ShowMessage('The men in white coats will be along shortly'); 

    На дополнительно распространяемой дискете содержатся более полные примеры 
(по сравнению с приведенными в книге). Поэтому, если тестирование 
рассматриваемого примера закончится переформатированием жесткого диска, у вас 
всегда есть возможность воспользоваться оригинальной версией данного примера 
(разумеется, после восстановления системы). Визуальным напоминанием о том, что 
здесь вам не помешало бы обратиться к дискете, послужит специальная 
пиктограмма на полях книги. 

    Резюме 

    Назначение разделов "Резюме" (этих своего рода мини-памяток) несложно 
предугадать — с их помощью вы должны не просто вспомнить материал, изложенный 
в каждой главе, но и "разложить его по полочкам". Так о чем же вы узнали из 
этой главы? 
    Изучение Delphi началось со знакомства с самыми характерными чертами — 
могуществом интегрированной среды разработки (IDE), объектно-ориентированной 
природой, библиотекой компонентов, поддержкой OLE и ActiveX, шаблонами, полной 
компиляцией, устойчивыми к ошибкам приложениями и доступом к данным. 
    Затем мы конкретизировали возможности, предоставляемые Delphi 3: 
расширенная среда разработки, библиотека визуальных компонентов (Visual 
Component Library, или VCL), библиотека динамических компонентов (Runtime 
Library, или RTL) и компилятор. Здесь вы узнали о новом распределенном наборе 
данных и весьма расширенной системе доступа к базам данных фирмы Borland 
(Borland Database Engine, или BDE). 
    После этого был представлен обзор тем, рассматриваемых в книге (чтобы во 
время ее приобретения у вас не было ощущения, что вы покупаете кота в мешке). 
    Нам осталось только пожелать вам успеха в освоении несметных богатств 
чудесного мира Delphi 3. Удачи вам! 

    Глава 1. Что нового в Delphi 3 23 

