Delphi/Pascal 
Delphi (Де́лфи, произносится /ˈdɛlˌfi:/[1]) — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal.[2] Начиная со среды разработки Delphi 7.0[3], в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.
Содержание |
Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET.
Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора[источник не указан 941 день] для GCC.
Object Pascal — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».
Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.[4]
Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.
- Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);
- Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET.
Delphi for .NET — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.
Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.
В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.[5]
Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland.
В августе 2006 года Borland выпустил облегченную версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++.
В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.
В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.
В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.[6]
25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009.[7] Версия привнесла множество нововведений в язык, как то[8]:
- По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
- Обобщённые типы, они же generics.
- Анонимные методы.
- Новая директива компилятора $POINTERMATH [ON|OFF].
- Функция Exit теперь может принимать параметры в соответствии с типом функции.
Вышедшая в 2011 году версия Delphi XE2 добавила компилятор Win64 и кросс-компиляцию для операционных систем фирмы Apple.
- Embarcadero Delphi (ранее наз. CodeGear Delphi и Borland Delphi) — наверное, самый известный компилятор, который является последователем Borland Pascal и Turbo Pascal. Используется Win16 (Delphi 1), Win32 (Delphi 2 и позже), Win64 (Delphi 16 (XE2) и позже), а также .NET 1.x, 2.0 (Delphi 8, Delphi 2005-Delphi 2007). Поддержка .NET, впоследствии выделена в отдельный продукт, известный как Oxygene.
- Free Pascal (FPC) — свободный компилятор Оbject Pascal, который поддерживает различные диалекты Паскаля, включая Turbo Pascal, Delphi и собственные диалекты. На текущий момент, FPC может генерировать код для x86, x86-64, PowerPC, SPARC и процессоров ARM, а также для различных операционных систем, в том числе для Microsoft Windows, Linux, FreeBSD, Mac OS. Существует несколько сред разработки программного обеспечения для FPC (один из самых известных представителей — Lazarus).
- GNU Pascal (отдельно разработанная версия из GCC). Не ставит целью продолжение серии диалектов Delphi, как составляющей Паскаля, но тем не менее содержит режим совместимости Borland Pascal, и очень медленно приспосабливает компоненты языка Delphi. Не подходит для компиляции больших проектов, содержащих код Delphi, но стоит отметить, что его поддерживают большинство операционных систем и архитектур.
- Oxygene (ранее известен как Chrome) — компилятор Object Pascal, который интегрирован в Microsoft Visual Studio. Также доступный в виде компилятора с вольной командной строкой CLI. Использует .NET и моно платформы. В настоящий момент продаётся под маркой Embarcadero Delphi Prism.
- MIDletPascal — язык программирования с Delphi-подобным синтаксисом, и одноименный компилятор, который преобразует исходный код в компактный и быстрый Java байт-код.
- PocketStudio — основанная на Паскале, IDE для Palm OS.
- Virtual Pascal — Бесплатный компилятор и текстовая IDE для Win32, OS/2 и Линукса. На тот момент очень быстрый и весьма совместимый (частично поддерживаются конструкции Delphi 5). Внешне очень похож на текстовую среду Borland Pascal 7, хотя отсутствует совместимая с ним графика, например. Однако разработка окончилась в 2004 году, а исходники открыты не были. С тех пор FPC ушёл намного вперед и в целом для программирования лучше он. Тем не менее, VP остаётся очень неплохим вариантом быстрой замены ещё более устаревших версий Borland Pascal для школы/института, учитывая родную работу в Win32 без проблем с русскими кодировками.
Cписок операторов через пробел: := + — * / div mod not and or with xor shl shr ^ = <> >= <= < > @ in is as
Выражения в Object Pascal(Delphi) бывают арифметическими, логическими и строковыми.
Основные логические выражения:
Логические выражения в основном употребляются в условных операторах. К логическим выражениям относятся такие операции как:
not — «НЕ», отрицание логического выражения (NOT <логическое_выражение>)
and — «И», умножение (пересечение) логических выражений (<логическое_выражение1> AND <логическое_выражение2>)
or — «ИЛИ», объединение логических выражений (<логическое_выражение1> OR <логическое_выражение2>)
xor — «Исключающее ИЛИ», отрицание ИЛИ, все что не попадает под ИЛИ (<логическое_выражение1> XOR <логическое_выражение2>)
Обрабатываемые в программе данные подразделяются на переменные, константы и литералы. Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы.
Объекты как экземпляры класса объявляются в программе в разделе var как обычные переменные. Например:
var CCircle1: TColorCircle; CircleA: TCircle;
Как и в случае записей, для обращения к конкретному элементу объекта (полю, свойству или методу) указывается имя объекта и имя элемента, разделенные точкой, то есть имя элемента является составным.
В языке Object Pascal классы — это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром (instance) этого класса или переменной этого типа.
Класс представляет собой особый тип, имеющий в своем составе такие элементы (члены, member), как поля, свойства и методы. Поля класса аналогичны полям записи и служат для хранения информации об объекте. Методами называются процедуры и функции, предназначенные как правило для обработки полей. Свойства занимают промежуточное положение между полями и методами.
Объединение и скрытие объектных данных, а также обрабатывающих их методов внутри конкретного класса от пользователя называется инкапсуляцией.
При создании новых объектов получить все свойства и методы от своих предков называют наследованием. Такие объекты наследуют после своего создания все поля, свойства, события, методы и прочее от своих предков. Наследование часто избавляет разработчиков от рутинной работы и позволяет не мешкая приступить к разработке чего-то нового.
Это методы различных объектов, которые могут иметь одинаковые имена, но по внутреннему содержимому отличаются друг от друга.
Каждая написанная программа на языке Delphi состоит из заголовка программы (program NewApplication;), поля используемых модулей Uses (к примеру, Uses Windows, Messages, SysUtils и т. д.), который может не входить в саму структуру, а также блоков описания и исполнения (начинаются составным оператором begin и заканчиваются end.).
program Project1; // Заголовок программы, с её именем «Project1» uses Forms, Unit1 in 'Unit1.pas' {Form1}; // модули, которые подключены к проекту и используются программой {$R *.res} begin Application.Initialize; // Инициализация приложения Application.CreateForm(TForm1, Form1); // Создание формы/окна Application.Run; // Запуск и исполнение end.
Вывод сообщения «Hello, world!» в консольном приложении Delphi
program Helloworld; //название программы {$APPTYPE CONSOLE} //директива компилятору о создании консольного приложения begin writeln('Hello, world!'); //вывод сообщения Hello, world! end. //конец программы
Вывод сообщения «Hello, world!» в 32-разрядном GUI приложении Delphi
... procedure TForm1.Button1Click(Sender: TObject); //Обработчик события OnClick, генерируемый автоматически begin ShowMessage('Hello, world!'); //вывод сообщения Hello, world! end; //конец процедуры ...
Динамическое создание списка строк и запись его в файл
// Обработчик события, происходящего при создании формы MainForm procedure TMainForm.FormCreate(Sender: TObject); var // Объявление переменной типа TStrings (список строк). Strings: TStrings; begin // Создание (выделение памяти и заполнение её начальными значениями) объекта типа TStringList. // TStringList - это потомок TStrings, реализующий его абстрактные методы с целью хранения строк в памяти. Strings := TStringList.Create; try // Добавление строки. Strings.Add('Добавляемая строка.'); // Сохранение всех строк в файл. Strings.SaveToFile('C:\Strings.txt'); finally // Освобождение памяти объекта и очистка ссылки на неё для предотвращения непреднамеренного обращения к не выделенной памяти. FreeAndNil(Strings); end; end;
Среди многих распространённых программных продуктов, сделанные на Delphi, можно найти:
- Продукция Embarcadero: Embarcadero Delphi, Embarcadero C++ Builder, Borland JBuilder 1 и 2 версии.
- Администрирование/разработка баз данных: MySQL Tools (Administrator, Query Browser), IBExpert.
- Инженерное ПО: Altium Designer
- Файловые менеджеры: Total Commander, Frigate.
- Просмотрщики графики: FastStone Image Viewer, FuturixImager.
- Видео- и аудиопроигрыватели: Light Alloy, The KMPlayer (не путать с KMPlayer), AIMP.
- Доставка информации в Интернете: QIP и R&Q, Skype, The Bat!, PopTray, FeedDemon.
- Создание музыки: FL Studio (ранее FruityLoops), Guitar Pro (до версии 6.0).
- Разработка программного обеспечения: Dev-C++, DUnit, Game Maker, Inno Setup.
- Веб-разработка: Macromedia HomeSite.
- Веб-браузеры (оболочки для MSIE): Avant Browser.
- Утилиты: Spybot — Search & Destroy, Ad-Aware, jv16 PowerTools, Download Master, ASProtect, Victoria.
- Текстовые редакторы: SynEdit, BirEdit, Notepad GNU, Bred.
- Бухучёт и налогообложение: Парус, AVARDA.
- Программы для создания анимаций: Pivot Stickfigure Animator.
- Программы для сжатия данных: ALZip, PowerArchiver, PeaZip.
- Компьютерные игры: Age of wonders, Космические рейнджеры, Космические рейнджеры 2, Venom. Codename: Outbreak, Space Empires V, Правда о девятой роте.
С более подробным списком приложений, написанных на языке Delphi можно ознакомиться по ссылке.
- ↑ В Великобритании доминирует произношение «дел-фи́»: Вариант произношения, характерный для Великобритании (англ.). Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011. Проверено 1 октября 2008.,
а в США — «де́л-фай»: Вариант произношения, характерный для США (англ.). Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011. Проверено 1 октября 2008. - ↑ Под таким названием он был разработан в фирме Apple Computer в 1986 году группой Ларри Теслера.
- ↑ Delphi Language Overview
- ↑ Об этом говорят обозначения версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (последняя версия Borland Pascal / Turbo Pascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 — 9.0 и т. д. Номер версии 11.0 носит компилятор Pascal, входивший в состав среды C++ Builder).
- ↑ Default Parallels Plesk Panel Page
- ↑ Delphi and C++Builder Roadmap
- ↑ Database Tools and Developer Software | Embarcadero Technologies
- ↑ Delphi from Embarcadero | RAD Application Development Software
- Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 = Delphi for Dummies — М.: Диалектика, 2007. — 336 с. — ISBN 0-7645-0179-8.
- Хавьер Пашеку. Программирование в Borland Delphi 2006 для профессионалов = Delphi for .NET Developer’s Guide — М.: Вильямс, 2006. — 944 с. — ISBN 0-672-32443-X.
- А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько. Программирование на языке Delphi. Учебное пособие — 2005.
- Страничка Delphi на сайте Embarcadero Technologies
- Крупнейшие информационные сайты и сообщества изучающих Delphi
- КОРОЛЕВСТВО Дельфи | Виртуальный клуб программистов
- Delphi Sources — Программирование на Delphi, более 800 примеров, статьи, форум, FAQ
- Delphi.int.ru — портал программистов Delphi
- Экспертная система портала Delphi.int.ru
- Мастера DELPHI
- Delphi Plus — новости, посвященные Delphi
- Torry’s Delphi Pages — крупнейший сборник компонент для Delphi (англ.)
- DRKB — Русская база знаний по Delphi
