От редактора перевода 

Книга, которую вы держите в руках, во многом необычна и отличается от других изданий, посвященных Delphi. Прежде всего, она предназначена не для начинающих. Чтобы по достоинству оценить изящество преподносимых здесь примеров, необходимо уметь обращаться с Delphi и разбираться в языке Object Pascal. Кроме того, книга никоим образом не претендует на то, чтобы считаться всеобъемлющей энциклопедией - это скорее хрестоматия, сборник интересных задач, удачных находок и красивых решений. 

Использовать эту книгу можно по-разному. Можно относиться к ней просто как к «поваренной книге» программиста, где собрано множество рецептов на все случаи жизни (к этому подталкивает как предисловие редактора серии «High Performance», так и название, под которым выходит русская версия). Но программирование  - это творчество, и основную ценность здесь представляют не только и не столько готовые решения, а лежащие в их основе идеи и та логика, тот ход мыслей, которые помогли эти идеи реализовать. Ведь рецептом можно всего лишь воспользоваться, а идея - потенциальный источник новых открытий. Так что если вы цените блестящие находки, умеете испытывать удовольствие от собственноручно решенной задачи и способны видеть красоту и гармонию в сухих строках листинга программы - эта книга для вас!

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

Александр Сергиенко
Январь 1998 г.

Предисловие 

Программисты (особенно начинающие) любят задавать вопросы типа: «Скажи, на чем ты пишешь?..» Когда-то этот вопрос выглядел вполне логично. Компиляторы, отладчики, серверы, системы управления базами данных и все остальное только-только выходило из каменного века. Программные инструменты разительно отличались друг от друга по качеству и возможностям. Стоило сделать ставку на неудачный инструментарий, и работа становилась излишне тяжкой, а качество результата - низким.

Сегодня стал актуальным другой вопрос: «А чего стоишь ты сам?» Благодаря непрерывной конкуренции современные средства разработчика стали невероятно мощными и качественными, так что среднему программисту вряд ли удастся выжать из них все возможное. Скорее всего, вы спасуете намного раньше, чем ваш инструментарий - если только не узнаете о нем абсолютно все и не доведете свое мастерство программиста до подлинного совершенства.

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

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

Наша главная цель - поднять ваше мастерство настолько, насколько вы сами захотите. Классные инструменты у вас уже есть, осталось лишь стать классным программистом.

Джефф Дантеманн
Моему благодетелю, Иисусу из Назарета. Ты подарил мне то, чего я не заслужил бы и за тысячу жизней.
Дон Тейлор
Дину Беннету (Dean Bennett) и Рэнди Шаферу (Randy Schafer), хорошим друзьям и коллегам.
Джим Мишель
Моей дорогой жене Джоси и прекрасным детям, Дэвиду и Диане, за их поддержку. Маме и папе - за любовь и непрестанные усилия, благодаря которым я стал таким, какой есть.
Джон Пенман
Тиму, брату и другу.
Теренс Гоггин
Моим мальчикам, Сэму и Арту, и их маме Тане. Не могу представить лучшей побудительной причины для продолжения работы.
Джон Шемитц

Благодарности

Благодарю Мардж Макрей (Marge McRae), друга и отличного соседа, за первое чтение рукописи и за предложенную идею с персонажем Мардж Рейнольдс (которая, кстати, не имеет ни малейшего отношения к настоящей Мардж).
Дон Тейлор
Выпуск такой книги требует неимоверных усилий - особенно когда в ее написании участвуют столько авторов (причем один из них нередко запаздывает со сдачей материалов). Дениза Константин (Denise Constantine), наш редактор проекта, проделала огромную работу. Ей удалось направить проект по правильному пути и разобраться с бесчисленными мелочами, мешающими выпуску книги. Спасибо Денизе - она заставила-таки меня сдавать работу в срок.
Джим Мишель
Хочу поблагодарить Джеффа Дантеманна (Jeff Duntemann) за то, что он вывел мою писательскую карьеру на орбиту успеха.
Джон Пенман
Хочу поблагодарить мою жену Таню, которая давно примирилась с выпавшим на ее долю тяжким жребием.
Джон Шемитц

Введение

Давным-давно, во второй половине 80-х, язык программирования Паскаль стал мишенью для постоянных нападок со стороны адептов C и (позднее) C++. Они так часто твердили: «Паскаль - игрушечный язык», что пресса поверила им на слово.

Большинство этих людей либо вообще ничего не знали о Паскале, либо прошли начальные курсы под руководством других «попугаев», для которых переносимость кода стала высшим достижением во всей компьютерной науке. Так что в учебных заведениях обычно преподавался выхолощенный Паскаль, пригодный разве что для перебора элементов массива или работы с командной строкой. На самом деле C обладает ничуть не большей переносимостью, чем Паскаль, но…, впрочем, довольно - все эти разговоры попросту смешны, поскольку переносимость была и остается мифом. А ну-ка, вы, знатоки C: кто возьмется написать на C полностью самостоятельную, не пользующуюся никакими библиотеками программу, которая помещает текстовый курсор в точку с координатами 0,0 в любой реализации C на любой платформе? Теперь понятно, что я имел в виду? No es posible. Все споры о переносимости так же бессмысленны, как и дискуссии по поводу происхождения НЛО.

Разумнее оценивать язык по тому, что на нем можно сделать, - и тому, насколько эффективным он делает труд программиста. Было время, когда C++ обладал некоторыми преимуществами. Но потом фирма Borland взялась за Паскаль и добавила в него все самое лучшее из C++. В «игрушечном языке» появились преобразования типов, указатели, объекты, встроенный ассемблер и средства для работы с Windows. Те из нас, кто продолжал работать с Паскалем, немедленно ухватились за эти новые возможности. Прошло совсем немного времени, и вокруг появилась масса чрезвычайно мощных приложений, написанных на Borland Pascal.

Все напрасно. Фанаты C++ фыркнули и отвернулись, а «попугаи» из прессы упорно продолжали именовать Паскаль «игрушечным языком». Дела обстояли настолько скверно, что многие фирмы-разработчики боялись признаться, что их приложения написаны на Паскале.

И тогда фирма Borland поступила совершенно правильно - она просто отказалась от «нехорошего слова из семи букв». Появилась среда Delphi. Это был уже не просто язык, а мощная и производительная «машина для построения программ». Delphi как продукт поражает своей глубиной  - можно месяцами блуждать по справочной системе и не встретить ни одной знакомой темы.

Потенциальные возможности Delphi были оценены не сразу. Только сейчас мы начинаем понимать, как много можно сделать в этой среде. Эта книга была задумана как сборник приемов программирования на Delphi для профессионалов - того, что даже на C++ сделать не так уж просто, а на «игрушечном языке» вообще невозможно. Раз и навсегда доказано, что Delphi справляется с созданием профессиональных Windows-приложений ничуть не хуже, чем любой другой язык.

Введение

Лишившись «нехорошего слова из семи букв», пресса с увлечением взялась за новую байку - будто на Delphi любое приложение делается в пять-шесть раз быстрее, чем на C++. Мне уже приходилось слышать о фирмах, где менеджеры запрещают работать на C++ и заменяют его на Delphi и Visual Basic.

Не обращайте внимания на дураков. Справедливость в конце концов восторжествует.

Джефф Дантеманн KG7JF
Скоттдейл, Аризона

СодержаниеСледующая

Используются технологии uCoz

Rambler's Top100 Rambler's Top100
Используются технологии uCoz