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

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

Спустя всего 13 месяцев после выхода Delphi 4 программисты имеют удовольствие лицезреть уже версию 5 со встроенными средствами создания распределенных систем и Internet-приложений. Мы с вами рассмотрим в Delphi 5 то основное, на что следует обратить внимание.

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

Уже стало ясно, что новым интерфейсом любовь пользователя не завоюешь. Все новое в области рисования на экране давно внедрено, и ловить здесь, собственно, нечего. Но можно пойти другим путем, сделав ставку на удобство интерфейса. Именно этот путь и выбрали разработчики Delphi 5.

Уровнем ниже располагается то, что так привлекает пытливых разработчиков. Это Open Tools API: более 80 интерфейсов для программного управления средой Delphi и реализации подключаемых модулей—расширений для IDE.

Настройки среды

Современное ПО характеризуется наличием огромного числа окон. Одни из них необходимы для основной работы и используются постоянно, а другие требуются лишь время от времени. Но это не означает, что они не нужны. Бедный пользователь, можно сказать, не живет, а прозябает, переползая от одного окна к другому. Какая уж тут продуктивность работы! А вот в Delphi 5 этот вопрос решается на уровне переключения рабочих столов (desktops). На основе собственного опыта программист создает удобные для себя конфигурации рабочего стола, каждая из которых является наилучшей для того или иного режима либо этапа разработки, после чего сохраняет готовые настройки под уникальными именами. Одно нажатие кнопки на специальной полосе быстрого доступа Desktops — и еще один рабочий стол записан. Переключение между различными рабочими столами делается щелчком мыши на раскрывающемся списке с именами.

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

Инспектор объектов

Инспектор объектов Delphi пострадал незначительно, а с точки зрения пользователя, и «в правильную сторону». Сказано новое слово — свойства компонентов теперь могут отображаться не только в алфавитном порядке, но и по определенным категориям, коих в Delphi 5 тринадцать: Action, Data, Database, Drag- Drop- and Docking, Help and Hints, Input, Layout, Legacy (морально устаревшие), Linkage, Locale, Localizable, Miscellaneous и Visual. Часто работать со свойствами, разделенными подобным образом, намного удобнее, особенно когда их десятки. Переключение между режимами производится через контекстное меню инспектора объектов — щелчок правой кнопкой мыши и затем команда меню Arrange?by Category. Можно управлять и отображением категорий свойств с помощью команды View контекстного меню. Любая категория может быть разрешена для просмотра и изменений или, наоборот, запрещена, как это имеет место с категорией Legacy (рис. 1).

Рис.1

Изменился и способ отображения значений свойств. Некоторые из них, скажем, дизайнерские, стали показываться на дисплее в их естественном виде. Например, цвет компонента (свойство Color) пользователь видит не только как имя константы, приемлемой для языка Object Pascal, но и как закрашенный прямоугольник. Согласитесь, намного удобнее. Это касается и свойств Pen, Brush, ImageIndex и Cursor (рис. 2).

Рис.2

Непонятно только, почему нельзя было так сделать еще в четвертой версии пакета. И конечно, жаль, что в новой версии разработчики из Borland, помимо стандартных цветов, не добавили в меню свойства Color еще и тонкую настройку цвета через диалоговую панель.

Еще одна маленькая, но очень полезная доработка: инспектор объектов позволяет теперь перепрыгивать от компонента к компоненту через связанные свойства. К примеру, если вы организуете связь с базой данных и настраиваете у компонента DataSource свойство DataSet, то двойной щелчок мышью на имени этого свойства при нажатой клавише переключит фокус ввода и инспектор на экземпляр того компонента, ссылка на который указана в окне свойства.

Небольшие изменения коснулись и редактора исходных текстов или, лучше сказать, его настроек. Во-первых, управление параметрами редактора вынесено в отдельное меню Tools?Editor Options, тогда как ранее все настройки были централизованы и располагались в меню Tools?Environment Options. Во-вторых, появилась раскладка клавиатуры Visual Studio emulation для тех, кто привык работать с продуктами Microsoft. «Гурманам» в программном интерфейсе управления средой Open Tools API предлагаются средства для подключения собственных раскладок, и даже имеется пример создания и подключения модуля с оригинальным названием New IDE Classic.

Похоже, всеобщей тенденцией становится встраивание в среду разработки списка заданий (To-Do List). Для написания «карманных» утилит, конечно, эта возможность неактуальна, но в больших проектах такой список способен выполнить роль хорошего органайзера. В отдельном окне можно видеть название процесса, его приоритет, владельца, категорию и некоторую другую информацию, например текущее состояние этого задания. После завершения работы вы отмечаете кнопку в нужной строке, и задание маркируется (зачеркивается), что свидетельствует о его выполнении (рис. 3).

Важное свойство списка заданий — умение привязывать отдельные свои пункты к тому или иному модулю. К примеру, вы закончили рабочий день, создав новый интересный модуль, но у вас уже есть задумка его усовершенствовать. Можно, не выходя из редактора, создать новое задание. Это задание появится в окне To-Do List, и в графе Module будет стоять ссылка на модуль, к которому оно привязано. Верный своим традициям, компилятор Delphi встраивает данные о подобного рода задании непосредственно в исходный текст в виде комментария, как это делается с ресурсами и опциями.

Пакет Delphi 5 оснащен дизайнером модулей данных (Data Module Designer), что отражает некий негласный стандарт, предусматривающий в больших разработках наличие готовых «черных ящиков» для связывания приложений с данными. Единожды созданный и настроенный модуль может распространяться между всеми разработчиками как некий контракт-соглашение о доступе к данным. В этом отношении здесь можно отметить определенный прогресс. Если раньше такой модуль представлялся как окно с невидимыми компонентами из панели Data Access, то теперь запускается специальное окно дизайнера, в котором имеются две панели: в левой отображаются компоненты и их взаимосвязь в виде иерархического дерева «parent-child», а в правой — компоненты данных либо в уже привычном виде (режим Components), либо в виде схем данных (режим Data Diagram), где легко проследить связи между таблицами и полями (рис. 4).

Все настройки схемы данных могут быть распечатаны на принтере и сохраняются в отдельном файле с расширением .DTI, никак не влияя на ход компиляции проекта.

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

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

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

К средствам преднамеренного останова следует отнести и новую для Delphi команду Run?Attach to Process, впервые испытанную на пакете Borland C++Builder 4. С ее помощью можно отлаживать программы, запущенные не в самой среде разработки, а как самостоятельные процессы. Очень мощное средство, но, подобно всем прочим инструментам такого рода, опасное, поэтому использовать его нужно с особой осторожностью, чтобы не «подвесить» все задания.

Многие окна отладчика поддерживают возможность редактирования перетаскиванием. Любое выражение может перемещаться из окна редактора в Watch List, Debug Inspector, окна стека, дампа и т. д.

Также мелочь, но долгожданная — функция возврата из подпрограмм Run Until Return. При случайном заходе внутрь процедуры она весьма выручает, так как теперь не приходится проходить в пошаговом режиме весь исходный текст подпрограммы или пользоваться всякими трюками вроде установки дополнительной точки останова.

Работа с базами данных

Тех средств, которые Delphi предоставлял ранее, с лихвой хватало для управления любыми СУБД. И все же, как оказалось, в этом направлении можно сделать еще несколько шагов. Delphi 5 включает новые компоненты ADO и IB Express.

Microsoft ActiveX Data Objects

ADO (ActiveX Data O bjects) — аббревиатура, упоминавшаяся в последний год особенно часто. Что за ней стоит? Интерфейс доступа к данным, базирующийся на наиболее свежей технологии универсальной работы с базами данных Microsoft OLE DB. Delphi 5 обладает набором из семи компонентов, инкапсулирующих возможности ADO. Например, TADODataSet является как бы проекцией объекта RecordSet технологии ADO, TADOConnection представляет собой компонент, создающий и управляющий соединением с источником данных, и т. д.

Новые типы данных, поддерживаемые ADO (WideString, GUID, Variant, Interface, IDispatch), нашли поддержку и в компонентах Delphi. Как ясно из их названий, подобные типы служат для хранения специализированных данных компонентной модели Microsoft COM.

Работать с компонентами ADO довольно просто. Единственное требование — наличие на компьютере библиотек времени выполнения ADO/OLE-DB runtime. Зато уже не нужно обращаться к уходящему на пенсию инструменту Borland DataВase Engine (BDE).

IB Express

На более серьезном уровне работы с данными, когда в качестве сервера баз данных задействуется IB DataBase, лучше иметь дело с компонентами IB Express, связывающимися с сервером через программный интерфейс IB DataBase API, который предоставляется клиентской частью IB DataBase. Созданные прикладные системы будут обладать максимально возможной производительностью, способностью работать при минимально доступных ресурсах (за что и люблю IB DataBase) и смогут использовать специфические возможности этого сервера баз данных: сигнализаторы событий, поля BLOB, средства двухфазного завершения транзакций и т. п.

Маленький трюк был применен для обеспечения совместимости между компонентами IB Express и Data Access. Дело в том, что у них общий предок — абстрактный VCL-класс TDataSet. Поэтому в одном и том же приложении и модуле данных можно смешивать обе группы компонентов и постепенно уходить от устаревающей технологии BDE.

Новое в поддержке COM

Версия Delphi 5 включает уникальную возможность импортирования серверов, выполненных по технологии COM, в форме компонентов VCL. Если импортируются элементы ActiveX для работы с базами данных, они автоматически адаптируются к любым наследникам класса TDataSet. Происходит то, что называется у специалистов по ИT «бесшовной» интеграцией. Чужеродные по сути своей компоненты прозрачно встраиваются в Delphi-приложения и даже могут пользоваться многозвенной архитектурой MIDAS.

Действительно мощным подспорьем для разработчиков, создающих ПО для Microsoft Office, будет палитра компонентов, в которой имеется более тридцати уже готовых серверов COM, обеспечивающих доступ к приложениям Office (рис. 5).

Набор утилит ITE

В Delphi 5 имеется весьма интересный инструментарий под общим названием Integrated Translation Environment (ITE) — набор утилит, управляющих процессом интернационализации и локализации. Будучи встроенным в среду разработчика, ITE автоматически готовит по одному новому проекту для каждой создаваемой языковой версии программы, а затем объединяет их в группу проектов. Для каждого варианта программы организуется отдельная динамическая библиотека, в которой складываются локализуемые ресурсы. После перевода ресурсов с использованием утилиты Translation Manager (рис. 6) весь проект обновляется единственным щелчком мыши в меню Delphi. Для хранения готовых переводов и разделения их между участниками проекта можно применить еще одну утилиту — Translation Repository. Кстати, этот репозитарий умеет импортировать данные из XML.

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

Инструмент для совместного ведения проектов TeamSource

Delphi 5 представляет новый инструмент, назвать который менеджером контроля версий было бы неправильно — это нечто большее. Сама компания Borland позиционирует TeamSource как менеджер документооборота. А сохранение и контроль версий являются лишь одной из его задач, для чего можно употребить как уже знакомый продукт PVCS компании Merant (бывшая InterSolv), так и новинку — контроллер Borland ZLib. Хотя ограничений на использование внешних механизмов контроля версий нет, нужно только применить специальный программный интерфейс TeamSource API.

Отметим, что TeamSource работает на основе параллельной модели, когда всем участникам проекта выделяется своя собственная копия проекта и все они работают над проектом параллельно.

Прочие возможности

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

Рис.7

Это актуально для многих приложений, которые используют возможности Web-серверов, поддерживающих ASP. Пакет не только осуществляет генерацию исходных текстов каркаса ASP-объекта, но и создает текстовую активную серверную страницу.

Вот, случилось. Теперь у вас есть выбор метода сохранения описания форм. Как известно, в предыдущих версиях Delphi формы хранились в виде DFM-файлов и просматривать описания их в виде текста можно было только в режиме визуального дизайна. Сейчас опции среды позволяют сохранять текстовые описания форм вместо бинарных. В этом случае компилятор сам определяет, что DFM-файл имеет текстовый формат и обрабатывает его с тем, чтобы получить годный для связывания бинарный вариант формы.

Появился новый вид форм — фреймы класса TFrame. Реально фреймы представляют собой нечто среднее между формами и настроенными компонентами. Они могут быть встроены в любые другие формы и фреймы как обычные компоненты. Фрейм можно использовать, например, для создания заготовки пользовательского интерфейса, которая в дальнейшем будет широко применяться в разных местах программы.

*     *     *

В заключение хотелось бы сказать, что, как показал проведенный в Internet опрос, программисты называют Delphi первым кандидатом на перенос в среду операционной системы Linux, и судя по шагам, предпринимаемым Borland.com, Delphi для Linux все-таки будет.