Главная » Delphi » О Delphi и Windows

0

Кстати, а почему именно Delphi? В принципе все современные пакеты визуального программирования позволяют делать одно и то же, а если какие-го вещи делать удобнее в одном пакете, а другие — в другом, то никто не мешает использовать их совместно. Скажем, библиотеки VCL (Visual Components Library) от Borland являются общими для Visual С++ и Delphi и написаны в основном на Object Pascal, a Windows API, наоборот, большей частью написаны на С (или С++), что не мешает использовать их в любой среде. Но Delphi, безусловно, является на сегодняшний день наиболее универсальной средой программирования, которая позволяет без лишних сложностей создавать как самые простые пользовательские программы, так и навороченные профессиональные пакеты.

Эта книга написана с расчетом на выполнение примеров в среде Delphi 7.0. Седьмая версия — последний релиз Delphi для платформы Win32, на которой основываются все версии Windows от 95-й до ХР. В настоящее время Microsoft переходит на платформу .NET — на ней будет полностью основана Windows Longhorn, которую планируется выпустить на рынок в 2006 году. Частично на .NET переходит уже обновленная 64-разрядная Windows ХР, готовящаяся к выходу в 2005 году. Между прочим, базовый язык программирования для платформы .NET под названием С# разрабатывает Андерс

Хейлсберг — человек, которому корпорация Borland во многом обязана самим своим существованием.

Рис. 1.1. Андерс Хейлсберг (рисунок Александры Дрофиной)

Андерс Хейлсберг (Anders Heilsberg)— создатель Turbo Pascal и один in главных архитекторов Borland Delphi с момента ее возникновения, человек, разработавший продукты, выведшие корпорацию Borland в ряды ведущих поставщиков программного обеспечения. Также главный архитектор языка С# для платформы Microsoft .NET. О себе Андерс рассказывает так (из интервью журналу "Домашний компьютер", #1,2004):

Я родшен в I960 году в Копенгагене, Дания. Свое тихое и мичое детство >t провел в пригороде Копенгагена. Потом учился на инженера по электротехнике в Техническом университете Дании. В 1987 году переехал в США, а в 1994 — женился. Живу в Сиэтле. С J 983 по 1996 я работач в компании Borland, а теперь в Microsoft. В 1979 я основач компьютерную компанию в Дании под названием PolyDala. Это было время, когда персональных компьютеров еще не существовало. Мы продавши компьютерные комтексы и писали для них программное обеспечение. Я написан такие вещи, как ассемблер, дизассемблер, небольшую операционную систему и несколько расширений для Microsoft ROM-Basic. Моим самым первым большим проектом с теп компилятор с языка Pascal и редактор, который мог заменить ROM- Basic. После этого я написал еще одну реализацию Pascal для операционной системы СР/М. Она называюсь Poly Pascal. В 1983 году мы объединились с ребятами, которые только что основаны компанию Borland, они лицензи- ровапи наш компилятор Pascal, добавили туда свой собственный редактор и назвали все это Turbo Pascal. Я помню, как души, что они сумасшедшие: эти парни продавали новый продукт по цене 49 долларов 95 центов, в то время как он стоил 500 долларов! Но достаточно быстро выяснилась, что я ошибайся — Turbo Pascal стаи очень популярным. Мы продали его столько, что в начале было невозможно представить.

Для того чтобы читатель немного сориентировался, приведем краткую сравнительную характеристику различных сред обработки от Borland, базирующихся на языке Pascal.

В начале всего был Turbo Pascal 1.0, вышедший на рынок 20 ноября 1982 г. Об искусстве Андерса Хейлсберга может говорить тот факт, что интегрированная среда разработки, встроенный редактор и библиотека времени выполнения умещались в файле turbo.com размером 33 280 байт. Правда, эта версия сама могла делать только СОМ-программы (если кто помнит, то в DOS существовал такой формат исполняемых файлов, отличавшийся от привычного ЕХЕ тем, что занимал только один 64-килобайтный сегмент памяти), но зато работала она на медленных ПК того времени очень быстро и давала очень компактный код, благодаря чему сразу вывела компанию Borland в лидеры. В дальнейшем эволюция Turbo Pascal привела к версии 7.0 (1992)— до сих пор популярному средству разработки программ под DOS. Благодаря непревзойденной по удобству среде разработчика (Integrated Development Environment, IDE) и простому для освоения языку, Turbo Pascal стал особенно популярным в непрофессиональной н полупрофессиональной срсдс. Строго говоря, последняя версия Turbo Pascal, как такового, называлась 6.0, седьмая версия называлась Borland Pascal и включала в себя две разных среды: Borland Pascal for DOS 7.0 (базирующийся на тестой версии с некоторыми существенными доработками) и Borland Pascal for Windows. Если вам удастся достать какое-нибудь пособие по последнему (например, раритетную книгу В. В. Фаронова "Паскаль и Windows"), то вы увидите, что разработка приложений под Windows "вручную" — довольно громоздкое занятие, требующее хорошего знания приемов объектно-ориентированного программирования (ООП). Чтобы облегчить это занятие, в Borland (под руководством все того же Хейлсберга) к 1995 году была разработана Delphi 1.0 — первая визуальная среда программирования, ориентированная па разработку 16-разрядных приложений под Windows Здг.

Начиная же с версии 2.0, Delphi ориентировалась на 32-разрядные версии Windows (95 и выше), использующие платформу Win32. Все использующиеся на практике на момент выхода этой книги версии Windows ориентируются именно на эту платформу, поэтому в подавляющем большинстве случаен вам вообще не нужно думать о том, какая версия Windows у вас установлена. И все же многие API могут быть специфичными для того или иного семейства ОС либо той или иной версии. Поэтому работу программ, особенно тех. которые предназначены для распространения, следует проверять под различными версиями. Для этого удобно установить на компьютере сразу несколько систем, благо ХР это позволяет без лишних сложностей.

На момент написания данной книги уже имеются версии Delphi 8.0 и Delphi 2005, ориентированные на .NET. Для совместимости в комплект поставки Delphi 8.0 входит Delphi 7.1, подобно тому, как в Borland Pascal входил Turbo Pascal, a Delphi 2 комплектовалась версией I. Разница только в том, что вторая версия Delphi в свое время вышла с опозданием, уже после выхода Windows 95, а восьмая версия отчасти опережает события. Заметим, что наименование "Delphi 8.0" следует признать неудачным — это другой продукт для другой платформы (изменили же когда-то марку Turbo Pascal на Borland Pascal — почему бы и не следовать этому принципу и в дальнейшем?). Поэтому большинство примеров, которые вы встретите в этой книге, в среде Delphi 8,0 (и выше), скорее всего, просто не будут компилироваться — но сами по себе готовые программы будут пригодны еще долгие и долгие годы, в будущей Longhorn декларирована совместимость с Win32 (подобно тому, как версии Win95/98/ME были совместимы с DOS-программами).

Что же касается более ранних версий, то большинство примеров из этой книги совместимы с версиями Delphi, начиная с 4.0, в крайнем случае 6.0. При установке следует позаботиться, чтобы у вас оказались установленными файлы справки по Win32. Эта справка, к сожалению, практически не обновлялась с версии 3.0, так что можно просто скопировать файл win32.hlp в отдельный каталог и пользоваться им автономно, независимо от версии пакета.

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

Несколько слов о том, каковы особенности работы программ под теми или иными версиями Windows. Главное отличие семейства 9х (95/98/МЕ) от семейства NT (NT/2000/XP) заключается в реализации многозадачности. В забытых ныне 16-разрядных версиях Windows 3~v многозадачность называлась кооперативной — фактически весь процесс работы заключается в выполнении последовательного ряда событий Windows, и пока одно событие не обработается, все остальные вынуждены ждать своей очереди. Таким образом, малейшая ошибка в одном приложении полностью подвешивает всю систему. Все программы, в том числе служебные, видимы друг для друга, модуль, содержащий ошибки обращения к памяти, может легко испортить ее содержимое, принадлежащее другому процессу.

В версиях семейства NT реализована настоящая — вытесняющая — многозадачность (напомним, что NT появилась раньше, чем 95-я). Такая система распределяет процессорное время и память между процессами (process) и потоками (thread)1, как будто бы каждый из них выполняется в отдельном компьютере, поэтому "зависшая" программа теоретически не оказывает влияния на все остальные. Но за это приходится платить— в первую очередь тем, что прямой доступ к "железу" практически исключен, а если вы попытаетесь этот запрет обойти тем или иным способом, то такая попытка ничем хорошим ни для вашей программы, ни для системы не кончится. То есть требования к качеству программного кода сильно повышаются и можно смело утверждать, что все случаи "обрушения" Windows ХР связаны именно с неправильно (как говорят программисты — "криво") написаннымн приложениями.

А в версиях 9х в целях совместимости с 16-разрядными приложениями (включая DOS-программы) реализовано что-то вроде промежуточного варианта. Все 32-разрядные прикладные программы выполняются в соответствии с моделью вытесняющей многозадачности. На уровне таких приложений формально все работает независимо, как и NT. Однако в области модели памяти (в основном из-за требований совместимости с 16-разрядными приложениями DOS и Win3x) есть серьезные дыры. Как и в 3.Y, ничто не может пометать программе, содержащей ошибку обращения к памяти, произвести запись в адреса, принадлежащие системным DLL, и вызвать крах всей системы.

В Windows 9х ситуация, когда выполняющийся поток все никак не освободит ресурсы компьютера, случается не так уж редко. Даже формально правильное приложение может быть источником неприятностей: так, многим знакома картинка, когда ресурсоемкая программа (архиватор, файловый менеджер при копировании больших объемов информации, или, например, поисковая программа) настолько "оккупирует" все ресурсы компьютера, что даже картинка рабочего окна не успевает прорисовываться. Один из механизмов таких задержек — но не единственный, конечно — связан с тем, что многие подобные процессы выполняются через 16-разрядные функции, а только один поток может обращаться к 16-разрядным DLL в каждый момент времени, потенциально затормаживая другие процессы, которым нужен к ним доступ. Другой — с неправильным распределением приоритетов одновременно выполняющихся потоков. Бороться с такими неприятностям!! можно только внутри самой программы, периодически искусственно вызывая обработчик системных сообщений, но самое правильное — по возможности не использовать потенциально "тормозных" процедур вообще.

Источник: Ревнч Ю. В.  Нестандартные приемы программирования на Delphi. — СПб.: БХВ-Петербург, 2005. — 560 е.: ил.

По теме:

  • Комментарии