|
|
Класс языка: | |
---|---|
Появился в: | |
Автор(ы): | |
Расширение файлов: |
.pas,.dpr,.dpk,.pp |
Релиз: |
Delphi XE3 (2012) |
Типизация данных: | |
Основные реализации: |
Borland/Inprise/Codegear/Embarcadero Delphi; Borland Kylix; FreePascal |
Испытал влияние: | |
Сайт: |
Официальный сайт |
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) и написания компилятора для 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.
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]:
Вышедшая в 2011 году версия Delphi XE2 добавила компилятор Win64 и кросс-компиляцию для операционных систем фирмы Apple.
Список операторов через пробел: :=
+ — * / 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, можно найти[9]:
Программирование на языке Delphi в Викиверситете? |
Pascal | |||||||
---|---|---|---|---|---|---|---|
Диалекты |
Clascal • Concurrent Pascal • Delphi • Pascal • Object Pascal • Oxygene • SuperPascal |
||||||
Компиляторы |
|
||||||
IDE | |||||||
Персоны |
Основные языки программирования (сравнение • IDE • история • хронология) | |
---|---|
Используемые в разработке |
Ада • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET) |
Академические | |
IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
Прочие | |
Эзотерические | |
Визуальные |
Delphi (язык программирования).