Pascal и delphi


Содержание

Программирование | Pascal и Delphi

Delphi (Дельфи) — это среда программирования, которая использует язык Object Pascal, разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. По сути мы видим наследника языка Pascal с объектно-ориентированными расширениями. Свою историю язык Object Pascal ведет с первых Turbo Pascal`ей разработанных Никлаусом Виртом. Язык Pascal, полностью процедурный язык, был предложен Виртом в конце 70-х годов как хорошо структурированный учебный язык. Расширения, привнесенные в язык компанией Borland, преследовали две основные цели:

  • упрощение обработки в языке структур, представляющих наиболее распространенные типы данных строки и файлы (например, в язык был внесен новый тип данных string);
  • реализация в языке основных возможностей объектно-ориентированных языков программирования.

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

Pascal был уникальным в своём роде — он имел самый быстрый компилятор в мире, да и в нем впервые была разработана технология создания платформенно независимых программ, которая нашла широкое применение в таком языке, как Java. Своё имя он получил в честь великого французкого физика Паскаля. Позднее, разработкой Pascal`ей занялась компания Borland, с помощью которой Pascal встал на серийное производство. надо заметить, что кроме Turbo Pascal компанией выпускался Borland Pascal, который выходил в свет несколько позднее, чем Turbo Pascal, но в отличие от него обладал большими способностями, как то различные режимы компиляции программы, более расширенный набор функций. Так, версия за версией было выпущенно семь Turbo и Borland Pascal`ей.

С появлением Windows у Pascal`я появилась новая разновидность — Turbo и Borland Pascal for Windows. Данная программа была не чуть не лучше обыкновенного блокнота, разве что только цифры отображала синим. Но время шло, требования к качеству оформления программ росли, а языки программирования оставались всё теми же — Dos`овскими. И вот, наконец, компанией Microsoft был совершен переворот в области прикладного программирования — ими впервые была создана визуальная система разработки прикладных программ, которую они реализовали в Visual Basic. К новому стандарту стали приобщать все языки программирования, не избежал своей участи и Pascal. В тот момент, когда разработчики Pascal`я в компании Borland наконец добрались до него — находился он довольно в запущенном состоянии. Было пересмотрено и переработано множество функций, добавленно, а вернее сказать создано, многое. И в итоге внесения оказались столь колоссальными, что разработчики создали, можно сказать, новый язык программирования. Своё имя новая система (Delphi) получила в честь древнегреческого города Дельфы. Название было выбрано не спроста: город Дельфы связан с именем бога мудрости и покровителем искусств Аполлона. Согласно легенде главное святилище Аполона находилось именно в этом городе. Его жрицы-сивиллы изрекали пророчества желающим узнать свою судьбу. Вот что отметил руководитель исследовательной группы по разработке системы Delphi Чак Язджевски: «Имя Delphi было предложено Денни Торпом во время одной мозговой атаки. Мы хотели, чтобы в имени системы отразились уникальные способности продукта к работе с базами данных, и Delphi как нельзя лучше перекликается с таким заслуженным именем в этой области, как Oracle, по крайней мере для тех, кому сочетание «Дельфийский Оракл» о чем-то говорит».

Так каждый год появлялась новая версия Delphi, но после пятой что-то случилось и новая версия не появилась в срок. Оказалось, что параллельно с разработкой новой версии Delphi, велась разработка нового, Delphi-подобного языка программирования для Linux. Новый продукт получил название Kylix. Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp. Версия 1 была предназначена для разработки под 16-ти разрядную платформу Win16; Версии со второй компилируют программы под 32-х разрядную платформу Win32; Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux; Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET); Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET; Delphi for .NET — среда разработки Delphi, а так же язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET. Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET.

В настоящее время, в Delphi 2006, можно писать приложения для .NET используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет писать NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием билиотек VCL и CLX. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0. В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++Builder по причине убыточности этого направления. Планируется продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland. Borland продолжил развитие IDE систем под именем Turbo: Turbo Delphi, Turbo Delphi for .NET, Turbo C#, Turbo C++. А в марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP. В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования. Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки — и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++.

К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiString) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных. Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать шаблоны проектов и мастеров, создающих заготовки проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE). Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

Ну, и одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux.

Немного дальнейшей истории фирмы Borland. В феврале 2006 года Borland Software Corporation объявила о своих планах полностью переключиться на разработку и поддержку средств управления жизненным циклом приложений (Application lifecycle management), в рамках этого плана Borland приобрела компанию-поставщика ALM-решений Segue Software Inc и анонсировала планы о поиске покупателя на часть бизнеса компании, связанного с созданием средств разработки приложений, включая линейки Borland Developer Studio (Delphi, C++ Builder, C#Builder) и JBuilder. Покупателя найти не удалось, поэтому направление интегрированных средств разработки было выделено в коммерчески самостоятельное подразделение CodeGear. При этом в Интернете даже появился проект по сбору средств на приобретение Delphi с целью сделать его свободным программным обеспечением (free software).

7 мая 2008 года компания Embarcadero Technologies приобрела у Borland Software её подразделение CodeGear за $23 млн стоимости предприятия и $7 млн дебиторской задолженности.

6 мая 2009 стало достигнуто соглашение о продаже Borland Software за $75 млн британской компании Micro Focus, которая специализируется на поддержке крупных корпоративных систем на языке COBOL, в том же году сделка завершена.

Объект Pascal vs Delphi?

в чем разница между объектом Pascal и Delphi? Это одно и то же? Каковы различия и сходства между ними и какой из них более полезен?

5 ответов

Object Pascal был объектно-ориентированным расширением Pascal, разработанным Apple. Первая версия Delphi была разработана из Turbo Pascal. Объектно-ориентированные функции в Turbo Pascal по праву считались непригодными для использования. Таким образом, Борланд разработал Delphi 1 и включил Большую часть языка Apple Object Pascal. Таким образом, язык для продукта Delphi первоначально назывался Object Pascal.

Apple прекратила разработку объекта Pascal, и он никогда не был стандартизирован, как это было изначально задумывалось. Для выпуска Delphi 6 Борланд решил переименовать свой язык в Delphi.

вы задаете вопрос:

в чем разница между объектом Pascal и Delphi?

но это не слишком важно, так как исходный объект Pascal больше не существует в отдельной форме. Apple бросила его. Единственными существующими реализациями Object Pascal, подобными языкам, которые широко используются, являются Delphi и языки, которые он вдохновил: FreePascal, Oxygene, DWS и т. д.

таким образом, лучшим вопросом было бы: «в чем разница между Delphi и FreePascal?»В настоящее время Object Pascal используется свободно для обозначения этого семейства родственных языков.

объект Pascal является расширением для Pascal. Существует несколько диалектов Object Pascal, одним из которых является Delphi. Вот довольно полная запись на история Паскаль. Он не включает бесплатный Pascal или DWS. Free Pascal ориентирован на то, чтобы быть открытым исходным кодом и кросс-платформенным клоном Delphi (я уверен, что оскорбил нескольких людей этим.)

каждый диалект объекта Pascal добавляет вещи и реализует вещи немного по-разному.

Так Pascal-это семейство языков с объектом Pascal в качестве подсемейства, а Delphi-подсемейство объекта Pascal.

Как уже говорилось, объект Pascal происходит от предложения стандартов Apple, которое никогда не было ратифицировано, и до сих пор используется для диалектов, которые заимствуют из него. Больше всего диалект, используемый Дельфи.

объектно-ориентированные версии Turbo Pascal также упоминались как Object Pascal, насколько я знаю, хотя иногда как «Pascal с объектами». Я не знаю, есть ли связь между реализацией объектов Turbo Pascal и предложением Apple. Основной аспект позаимствован у Apple кажется, что экземпляры Object всегда являются неявными ссылками.

Борланд называет язык язык Delphi и, таким образом, точным эквивалентом объекта Паскаля является язык Delphi не Дельфи.

с Delphi является зарегистрированным товарным знаком во многих странах большинство совместимых продолжали ссылаться на язык как Object Pascal, даже после того, как Борланд переименовал его. Переименование было сделано в основном потому, что По словам Борланда,» Паскаль «слишком много приравнивается к» старому » на рынке. Некоторые говорили, что это потому, что «Object Pascal» не может быть торговой маркой, и поэтому переименование было антиконкурентной мерой. (Я не параноик, я не думаю, что это было направлено против FreePascal, который не был никакой угрозой тогда, если это правда, это, вероятно, против встроенных стартапов, таких как Pocketstudio и Gardens Point)

Borland использовал имя Object Pascal для языка программирования в первых версиях Delphi, но позже переименовал его в язык программирования Delphi. Однако компиляторы, которые утверждают, что совместимы с Object Pascal, часто пытаются быть совместимыми с исходным кодом Delphi. Поскольку Delphi является торговой маркой, совместимые компиляторы продолжали использовать имя Object Pascal.

насколько я знаю, Object Pascal-это имя языка, стоящего за Delphi. Сам Delphi является IDE (интегрированной средой разработки). В этом смысле вы можете сказать, что Object Pascal для Delphi (и Lazarus) то, что objective C для xCode. Кроме того, Delphi также известен как RAD (Быстрая разработка приложений) IDE. Надеюсь, это поможет.

Pascal и delphi

Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора [источник не указан 1261 день] для 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. [источник не указан 230 дней] Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании 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 по причине убыточности этого направления. Планировалась продажа >[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.
  • M >Синтаксис языка

Операторы

Список операторов через пробел: := + — * / div mod not and or with xor shl shr ^ = <> >= @ in is as

Этот раздел статьи ещё не написан.

Выражения

Выражения в Object Pascal (Delphi) бывают арифметическими, логическими и строковыми.

Основные логические выражения:
Логические выражения в основном употребляются в условных операторах. К логическим выражениям относятся такие операции как:

  • not — «НЕ», отрицание логического выражения (NOT )
  • and — «И», умножение (пересечение) логических выражений ( AND )
  • or — «ИЛИ», объединение логических выражений ( OR )
  • xor — «Исключающее ИЛИ», отрицание ИЛИ, все что не попадает под ИЛИ ( XOR )
Этот раздел статьи ещё не написан.

Типы данных

Обрабатываемые в программе данные подразделяются на переменные, константы и литералы. Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы.

Объекты

Объекты как экземпляры класса объявляются в программе в разделе var как обычные переменные. Например:

Как и в случае записей, для обращения к конкретному элементу объекта (полю, свойству или методу) указывается имя объекта и имя элемента, разделенные точкой, то есть имя элемента является составным.

Классы

В языке Object Pascal классы — это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром (instance) этого класса или переменной этого типа.

Класс представляет собой особый тип, имеющий в своем составе такие элементы (члены, member), как поля, свойства и методы. Поля класса аналогичны полям записи и служат для хранения информации об объекте. Методами называются процедуры и функции, предназначенные как правило для обработки полей. Свойства занимают промежуточное положение между полями и методами.

Объектно-ориентированные особенности языка

Инкапсуляция

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

Наследование

При создании новых объектов получить все свойства и методы от своих предков называют наследованием. Такие объекты наследуют после своего создания все поля, свойства, события, методы и прочее от своих предков. Наследование часто избавляет разработчиков от рутинной работы и позволяет не мешкая приступить к разработке чего-то нового.

Полиморфизм

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

Примеры

Структура программы

Каждая написанная программа на языке Delphi состоит из заголовка программы (program NewApplication;), поля используемых модулей Uses (к примеру, Uses Windows, Messages, SysUtils и т. д.), который может не входить в саму структуру, а также блоков описания и исполнения (начинаются составным оператором begin и заканчиваются end.).

Пример № 1

Вывод сообщения «Hello, world!» в консольном приложении Delphi

Пример № 2

Вывод сообщения «Hello, world!» в 32-разрядном GUI приложении Delphi

Пример № 3

Динамическое создание списка строк и запись его в файл

Расширения файлов

  • .pas — исходный код модуля (pascal)
  • .dpr — исходный код проекта (pascal)
  • .dproj — исходный код проекта (xml)
  • .dproj.local — исходный код проекта (xml)
  • .dfm — исходный код формы
  • .dpk — скомпилированный пакет
  • .dcu — скомпилированный модуль
  • .exe — скомпилированное приложение
  • .res — ресурсы
  • .dsk — привязки к файлам
  • . >Известное программное обеспечение, созданное на Delphi

Среди многих распространённых программных продуктов, написанных на Delphi, можно найти [9] :

  • Продукция Embarcadero: Embarcadero Delphi, Embarcadero C++ Builder, Borland JBuilder 1 и 2 версии.
  • Администрирование и разработка баз данных: MySQL Tools, IBExpert.
  • Инженерное программное обеспечение: Altium Designer.
  • Файловые менеджеры: Total Commander, Frigate.
  • Просмотрщики графики: FastStone Image Viewer, FuturixImager, drComRead.
  • Видео- и аудиопроигрыватели: Light Alloy, The KMPlayer, AIMP, X-Amp.
  • Программы мгновенного обмена сообщениями: QIP, R&Q, графический интерфейс Skype, The Bat!, PopTray, FeedDemon.
  • Создание музыки: FL Studio, Guitar Pro (до версии 6.0).
  • Разработка программного обеспечения: Dev-C++, DUnit, Game Maker, Inno Setup, PyScripter.
  • Веб-разработка: Macromedia HomeSite.
  • Текстовые редакторы: BirEdit, Notepad GNU, Bred.
  • Бухучёт и налогообложение: «ПАРУС», AVARDA (до версии 6.x включительно).
  • Программы для создания анимаций: Pivot Stickfigure Animator.
  • Программы для сжатия данных: ALZip, PowerArchiver, PeaZip.
  • Компьютерные игры: Age of wonders, «Космические рейнджеры», Venom. Codename: Outbreak, Space Empires V, «Правда о девятой роте».
  • Графические редакторы: Real Paint.

Примечания

  1. В Великобритании доминирует произношение «дел-фи́»: вариант произношения, характерный для Великобритании (англ.) . Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011.Проверено 1 октября 2008. , а в США — «де́л-фай»: вариант произношения, характерный для США (англ.) . Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011.Проверено 1 октября 2008.
  2. Под таким названием он был разработан в фирме Apple в 1986 году группой Ларри Теслера.
  3. Delphi Language Overview
  4. Об этом говорят обозначения версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (последняя версия Borland Pascal / Turbo Pascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 — 9.0 и т. д. Номер версии 11.0 носит компилятор Pascal, входивший в состав среды C++ Builder).
  5. Default Parallels Plesk Panel Page
  6. Delphi and C++Builder Roadmap
  7. Database Tools and Developer Software | Embarcadero Technologies
  8. Delphi from Embarcadero | RAD Application Development Software
  9. Good Quality Applications Built With Delphi — Delphi Programming (англ.) [неавторитетный источник?]

Литература

  • Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 = Delphi for Dummies. — М .: Диалектика, 2007. — 336 с. — ISBN 0-7645-0179-8
  • Хавьер Пашеку. Программирование в Borland Delphi 2006 для профессионалов = Delphi for .NET Developer’s Gu >М .: Вильямс, 2006. — 944 с. — ISBN 0-672-32443-X
  • А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько.Программирование на языке Delphi. Учебное пособие. — 2005.

Ссылки

Программирование на языке Delphi в Викиверситете ?
  • Страница среды программирования на сайте Embarcadero Technologies
Pascal
Диалекты

Clascal • Concurrent Pascal • Delphi • Pascal • Object Pascal • Oxygene • SuperPascal

C/AL • Delphi • Delphi Prism (Oxygene) • FrameworkPascal • HP Pascal • IP Pascal • PocketStudio • Prospero Pascal

Pascal и delphi

Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.2.2003
Где: MO

Репутация: нет
Всего: нет

Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

Репутация: нет
Всего: 2

SmaLL
Дата 11.2.2003, 17:18 (ссылка) | (нет голосов) Загрузка .
Цитата(Michail @ 11.2.2003, 07:21)
Почему нельзя создать отдельные темы по Паскалю и по Дельфи? Я конечно понимаю что языки похожи, но они всётаки разные. Паскаль чисто досовский язык без виндовых элементов визуализации. Дельфи практичиски Визуал. Смысл объеденения не понятен. Чтобы найти исходник на Паскале приходится перелопатить практически все темы. Это очень не удобно. Особенно при низкой скорости соеденения.

Не забывай, что Паскаль - это не только Турбо-Паскаль под ДОС, есть же и Турбо-Паскаль под Windows, и Борланд-Паскаль под Windows.
А приЁмы программирования очень похожи.
Я думаю, что этот вопрос не должен стоять.

Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 5
Всего: 88

Vex
Дата 11.2.2003, 18:46 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 10
Всего: 207

За последний год не набролось и десятка вопросов по Паскалю, ИМХО такой раздел не нужен.

Модератор: Тема перемещена в обсуждение форума

Vit
Дата 11.2.2003, 23:03 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.2.2003
Где: MO

Репутация: нет
Всего: нет

Michail
Дата 12.2.2003, 13:58 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.2.2003
Где: MO

Репутация: нет
Всего: нет

Vit Зайдя в хлебный магазин ты видиш на полках сухари. сухари. На вопрос: А где же хлеб? Тебе отвечают: Но они ведь тоже из хлеба. Зачем тогда завозить хлеб.

Так и здесь народ зайдя на форум ищет задаваемые вопросы по Паскалю, но ненаходит их, зато видет Дельфи. Дельфи. На других форумах вопросы по паскалю задаются весма активно, но весьма не активно на них отвечают.

Michail
Дата 12.2.2003, 14:30 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 5
Всего: 88

Vex
Дата 12.2.2003, 17:43 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25

Michail я не понимаю, что по Паскалю там нельзя задать вопрос?
ИМХО если разделить, то Паскаль вохможно просто удалят.

Klin
Дата 13.2.2003, 03:25 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 10
Всего: 207

Vit
Дата 13.2.2003, 03:31 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Модератор
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 1
Всего: 57

December
Дата 13.2.2003, 05:40 (ссылка) | (нет голосов) Загрузка .
Цитата(Vex @ 11.2.2003, 09:46)
Вообще-то Delphi - это не язык программирования, это интегрированная среда разработки, в Делфи Object Pascal используется как язык программирования.

Начиная с D7 Object Pascal официально переименовывается в язык Delphi - What's new section of help.

Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154

Medved
Дата 13.2.2003, 06:56 (ссылка) | (нет голосов) Загрузка .
Цитата
Ваш пример с сухарями впечатляет

Я долго смеялся. правда. Да, пример с сухарями действительно впечатляет. Но есть логика, а есть псевдологика. Логика вещь интересная. И с помощью логики можно доказать, что рыба- это птица. (Или вспомните пример из фильма "Олигарх" где с помощью логики доказано, что крокодил более зеленее, чем длинее :-)
Если честно, я так и не понял, почему завязалась такая дисскуссия. Я ИМХО считаю, что Delphi - это продолжение Pascal, как С++, продолжение С. И по сути, очень многие кто сейчас програмирует на Delphi, начинали именно с Pascal. По крайней мере, все мои знакомые программисты, и я сам именно так и делали. И фактически любой достаточно граммотный дельфист ответит на любой вопрос по паскалю.

А если вернуться к примеру с сухарями, то можно провести аналогию с тем, что Michail предлагает хлебный отдел, разделить на несколько разных отделов, в одном продаются только сухари, в другом только батоны, в третьем только булочки и т.д. Зачем? Если я и так знаю, что сухари продаются только в хлебном отделе, и искать их не следует в каком-либо другом.

Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154

Delphi и Pascal

Pascal
Трудно рассказать что-то новое о том, что хорошо известно всем. Действительно, вряд ли найдется в нашей стране программист или просто выпускник средней школы, который не знал бы (или не слышал) об этом языке программирования. Основные концепции языка были разработаны в 1967-1968 г. профессором Николаусом Виртом (Niklaus Wirth)(Биографию Вирта можно прочитать на http://cc.kzoo.edu/ k98ja01/wirth.html) и опубликованы в 1971 году (The Programming Language Pascal Acta Informatica, 1 (Jun 1971), 35-63). Стандарт языка был разработан им в 1974 г.(PASCAL - User Manual and Report, ISO Pascal Standard Kathleen Jensen and Niklaus Wirth) совместно с Кетлин Йенсен (Kathleen Jensen). Паскаль достаточно быстро превратился из средства, предназначенного для обучения студентов программированию, в инструмент, который стали использовать для создания больших программных проектов. Заметим, что ни один из последующих языков, разработанных автором (а Вирт является создателем Модулы и Оберона), не получил такого распространения. Трудно сказать, с чем это связано. Возможно, с тем, что язык удачно сочетает простоту с выразительностью и силой. Возможно, что просто он оказался в нужный момент на нужном месте, поскольку на момент создания языка, получившего свое имя в честь великого французского математика, в распоряжении программистов было весьма и весьма немного языков высокого уровня. И что самое главное, все они были разработаны для решения конкретных прикладных задач и во многом являлись продуктом , а не результатом серьезного научного труда. Фортран, названный одним из пионеров программирования Дейкстрой (Edsger Dijkstra) инфантильным дезорганизатором, предназначался только для математических расчетов и не выдерживал никакой критики с точки зрения ограничения доступа к данным и отсутствия поддержки структурного программирования. Об интерпретаторе Бейсик (тогда еще без приставки Visual) нельзя было говорить без слез. Кобол был ориентирован на решение экономических задач, a PL/I - чрезмерно сложен и принадлежал скорее к области проблем, чем к области решений. И вот тут появляется язык, на порядок отличающийся от них своим качеством. Основное, что привлекало к нему, - логичность, поддержка концепций структурного и процедурного программирования, работа с динамической памятью, возможность создания своих типов данных. Все это стало теперь настолько привычным, что трудно представить, как можно программировать без использования этих жизненно необходимых возможностей.

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

Еще одной причиной, которая позволила языку перейти в категорию бестселлеров, стала поддержка разработчиков коммерческого ПО. И тут мы не можем пройти мимо фирмы Borland (ныне Inprise). Разработанный ею Turbo Pascal во всех его модификациях является в России одним из самых популярных продуктов. Интегрированная оболочка, которая включает в себя редактор, компилятор, компоновщик и отладчик, вместе с интерактивной справочной системой сделали разработку программ на Паскале делом простым и понятным практически любому человеку. Но так было не всегда. Например, в начале восьмидесятых автору довелось поработать с одним из первых компиляторов Паскаля на платформах DEC. В нем сначала нужно было в редакторе создавать программу, затем однопроходный компилятор выдавал код на ассемблере, далее приходилось транслировать его в объектный код, компоновать с системными библиотеками и только после этого запускать программу. Поиск ошибок (без встроенного отладчика, который сейчас просто показывает вам строку, где произошла ошибка) был делом, требующим терпения, и, самое главное, процессом весьма длительным.

Кроме создания интегрированной оболочки, Borland ввел в Pascal поддержку модульного программирования, а начиная с версии 5, и поддержку объектно-ориентированного программирования.

В настоящее время действуют три стандарта языка. Первый из них - нерасширенный Паскаль (unextended Pascal) был разработан в 1983 году(Смотрите стандарты ANSI/IEEE 770Х3 97-1993 и ISO 7185:1983. Стандарты ISO доступны по адресу http://www.iso.ch/welcome.html) и практически полностью совпадает с описанием языка в нотации Йенсен-Вирта. Второй - Extended Pascal - содержит расширения, касающиеся модульного программирования (раздельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация), и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и т д.)(Смотрите стандарты ANSI/IEEE 770Х3.160-1989 и ISO/IEC 10206:1991). Последний - объектный Паскаль (Object-Oriented Extensions to Pascal), в отличие от первых двух, формально не утвержден, но оформлен в виде отчета (ANSI Technical Report) в 1993 г.(Смотрите ANSI/X3-TR-13-1994) Объектный Паскаль поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и ряд других атрибутов объектно-ориентированного программирования.

Следует иметь в виду, что практически ни один из коммерческих компиляторов языка не имеет полной поддержки даже нерасширенного Паскаля. Как правило, это касается некоторых отличий в синтаксисе языка. Причем все коммерческие оболочки привязаны к той или иной операционной системе. Это касается в первую очередь операций ввода/вывода информации, связанных с особенностями ОС (файловой системой, графикой), и использования памяти.

Delphi
В начале 90-х годов в мир ПК пришли операционные системы со встроенным графическим интерфейсом. Этот приход произвел настоящую революцию, которая позволила привлечь к работе с компьютером миллионы пользователей, ранее даже не помышлявших об этом. Распространение Windows и образование империи Microsoft вызвало необходимость в массовом создании программ, использующих все возможности интерфейса этой операционной системы. Delphi (произносится ) оказался одним из первых продуктов, который сделал этот процесс простым и понятным даже начинающим разработчикам. Причем, в отличие от других интегрированных оболочек (Visual Basic или SQL Windows), которые появились на рынке в это же время, Delphi позволяет разработчикам создавать новые компоненты, используемые в дальнейшем при визуальном программировании. В основу Delphi положен язык Object Pascal, да и сама система написана почти полностью на этом языке.

В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования.

Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки - и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++. К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiStrmg) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных.

Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать проектов и , создающих проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE).

Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

Ну, и одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux. Более подробную информацию о Delphi можно получить на сайтах www.inprise.com и www.inprise.ru. Существует большое количество сайтов, посвященных Delphi, например «Королевство Delphi» - delphi.vitpc.com, Torry's Delphi Pages - www.torry.ru. Последний содержит большое число ссылок на ресурсы, связанные с Delphi.

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

Листинг. Object Раsсаl

Medved
Дата 13.2.2003, 08:12 (ссылка) | (нет голосов) Загрузка .
Код
Program BYTE_Example; // Oject Pascal, Delphi 5
<$APPTYPE CONSOLE>// Прагма, делающая приложение консольным

uses SysUtils, Classes; // Используемые внешне модули

type
ТМуArray = class (TObject) // Класс - динамический массив
private
FArray : array of integer; // Поле для хранения данных
FPos : integer; // Счетчик введенных элементов
public
function GetLastNumber:integer; // номер последнего элемента
function GetElement(Poz:integer):integer; // Элемент по номеру
procedure AddElement(Value:integer); // Добавление в конец массива
constructor create; // Конструктор
destructor Destroy; override; // Деструктор
end;

const delta=100; // Приращение динамического массива

procedure TMyArray.AddElenient(Value: integer);
begin
if FPos>High(FArray) then // Нужно увеличить массив?
SetLength(FArray,Length(FArray)+delta); // Увеличим на Delta
FArray[FPos]:=Value; // Добавляем элемент
Inc(FPos);
end;

constructor ТМуArray.create; // Конструктор динамического массива
begin
inherited, // Вызываем конструктор предка
SetLength(FArray,delta); // Создали массив из delta-элементов
FPos:=0; // Счетчик элементов массива
end;

destructor ТМуАrrау.Destroy; // Деструктор динамического массива
begin // Уничтожаем объект
FArray:=nil; // Удаляем массив
inherited; // Вызываем деструктор предка
end;

function ТМуАrrау.GetElement(Poz: integer): integer;
begin result := FArray[Poz] end; // Читаем элемент по номеру

function ТМуАrrау.GetLastNumber: integer;
begin result :=FPos-1; end; // Получаем количество элементов массива

procedure ReadElementsFromFile; // Читаем из файла и выводим нечетные на экран

var
F: file of Integer; // Файл с целыми числами
МуАrrау: ТМуАrrау; // Объект для хранения чисел
i: integer; // Переменная цикла
begin
МуArray := ТМуArray. create; // Создали объект-массив
AssignFile(F, 'TestFile.dat'); // Открываем файл
reset(F);
while not eof (F) do
begin
read(F,I); // Читаем элемент
МуArray.AddElement(I); // Добавляем элемент в массив
end;
closeFile(F); // Закрываем файл
for i := МуArray.GetLastNumber downto 0 do // Выводим в обратном порядке
if МуArray.GetElement(i) mod 2 <> 0 then // Выводим только нечетные
writeln( intTostr(MyArray.GetElement(i))); // элементы в колонку
МуArray.Free; // Уничтожаем массив
end;

begin // Главный модуль
ReadElementsFromFile
end.

Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.2.2003
Где: MO

Репутация: нет
Всего: нет

Michail
Дата 13.2.2003, 13:55 (ссылка) | (нет голосов) Загрузка .
Цитата
Program BYTE_Example; // Oject Pascal, Delphi 5
<$APPTYPE CONSOLE>// Прагма, делающая приложение консольным

uses SysUtils, Classes; // Используемые внешне модули

type
ТМуArray = class (TObject) // Класс - динамический массив
private
FArray : array of integer; // Поле для хранения данных
FPos : integer; // Счетчик введенных элементов
public
function GetLastNumber:integer; // номер последнего элемента
function GetElement(Poz:integer):integer; // Элемент по номеру
procedure AddElement(Value:integer); // Добавление в конец массива
constructor create; // Конструктор
destructor Destroy; override; // Деструктор
end;

const delta=100; // Приращение динамического массива

procedure TMyArray.AddElenient(Value: integer);
begin
if FPos>High(FArray) then // Нужно увеличить массив?
SetLength(FArray,Length(FArray)+delta); // Увеличим на Delta
FArray[FPos]:=Value; // Добавляем элемент
Inc(FPos);
end;

constructor ТМуArray.create; // Конструктор динамического массива
begin
inherited, // Вызываем конструктор предка
SetLength(FArray,delta); // Создали массив из delta-элементов
FPos:=0; // Счетчик элементов массива
end;

destructor ТМуАrrау.Destroy; // Деструктор динамического массива
begin // Уничтожаем объект
FArray:=nil; // Удаляем массив
inherited; // Вызываем деструктор предка
end;

function ТМуАrrау.GetElement(Poz: integer): integer;
begin result := FArray[Poz] end; // Читаем элемент по номеру

function ТМуАrrау.GetLastNumber: integer;
begin result :=FPos-1; end; // Получаем количество элементов массива

procedure ReadElementsFromFile; // Читаем из файла и выводим нечетные на экран

var
F: file of Integer; // Файл с целыми числами
МуАrrау: ТМуАrrау; // Объект для хранения чисел
i: integer; // Переменная цикла
begin
МуArray := ТМуArray. create; // Создали объект-массив
AssignFile(F, 'TestFile.dat'); // Открываем файл
reset(F);
while not eof (F) do
begin
read(F,I); // Читаем элемент
МуArray.AddElement(I); // Добавляем элемент в массив
end;
closeFile(F); // Закрываем файл
for i := МуArray.GetLastNumber downto 0 do // Выводим в обратном порядке
if МуArray.GetElement(i) mod 2 <> 0 then // Выводим только нечетные
writeln( intTostr(MyArray.GetElement(i))); // элементы в колонку
МуArray.Free; // Уничтожаем массив
end;

begin // Главный модуль
ReadElementsFromFile
end.

А теперь сделайте тоже самое на Паскале не используя "внешние модули".

Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Электронный учебник программирования (Турбо-Паскаль, Делфи, алгоритмы)

  1. Особенности этого учебника.
    • В работе полезнее справочники. Но для начала приятнее прочесть "по порядку" основы.
    • Вы можете консультироваться с автором по E-mail
    • Примеры программ, приведенные здесь, не претендуют на эффективность. Это учебные программы,
      гарантируется только их работоспособность. Возможно, Вы найдете более простые и эффективные способы решения этих же задач.
    • Вы можете влиять на содержание (советами, просьбами, статьями). Можете заказать статью по тематике сайта. Пишите
    • Ссылки "заточены" под поисковых роботов. Возможно, это неудобно

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

  • Где искать информацию по вопросам, не освещенным (пока) в учебнике?
    • В конце страницы прочтите список рекомендуемой литературы.
    • Прекрасный сайт по Делфи - Королевство Делфи
    • Хороший сайт и форумы по Делфи
    • Посмотрите содержание и методику использования справочника-задачника и
      скачайте его, если нужно - для работы OffLine

    При изучении Object Pascal (Delphi) следует иметь в виду, что большинство конструкций языка Turbo Pascal применяется и здесь (так что Вы не зря это изучали). Поэтому начинайте изучение с Турбо Паскаля. Можно, конечно, начать с Делфи, и тогда возвращаться для прочтения большинства тем (например - условные операторы, записи и т д - если Вы это ранее не изучали) - к Турбо Паскалю. ( Сами объекты появились в Turbo Pascal 5.5. )

  • Изучаем серверы автоматизации - на (дополненных) примерах из книги И.Ю.Баженовой Delphi 7 [5], С.Тейксейры [6]
    • Общаемся с сервером Word через COM-интерфейсы (Documents = interface(IDispatch), CoWordApplication.Create, OLEVariant, sleep, ) - 10.10.2009
    • Используем компоненты для создания контроллера автоматизации Word (TWordApplication, TWordDocument, .ActiveDocument, TFontDialog, TColor <> WdColor) - 12.10.2009
    • Общаемся с сервером Word через переменную типа OleVariant или interface(IDispatch) - 17.10.2009
  • Рекомендуемая литература:
    1. Л.Н.Королев, А.И.Миков Информатика. Введение в компьютерные науки. - М.:Высш.шк., 2003. - 341 с.: ил. (Учебник, необходимый будущим программистам-профессионалам).
      Содержание этого учебника
    2. А.М. и В.А. Епанешниковы Программирование в среде Turbo Pascal 7.0 Диалог-МИФИ 2000 г. скачать можно здесь .djvu 2Мб
    3. А.Я.Архангельский Язык Pascal и основы программирования в Delphi. Учебное пособие - М.:ООО "Бином-Пресс", 2004г.- 496 с.:ил.
    4. Н.И.Вьюкова, В.А.Галатенко и др. Систематический подход к программированию. - М.: Наука, 1988, - 208 с. - Библиотечка программиста.
    5. И.Ю.Баженова Delphi 7. Самоучитель программиста. М., Кудиц-образ 2003.
    6. С.Тейксейра, К.Пачеко Delphi 5 Руководство разработчика, т.1,2
    7. Можно щелкнуть кнопку "Литература" программы "справочник+задачник".
  • Программирование Паскаль (Pascal) и Делфи (Delphi)

    Пример Memo в Delphi

    Данный пример будет реализован Memo и его свойств относительно шрифта. При выборе стиля и размера шрифта, в поле Memo, написанный некоторый отрывок текста будет меняться.

    Коды клавиш Delphi

    Таблица кодов клавиш, которыми можно пользоваться при проверке параметра Key в обработчиках событий OnKeyDown и OnKeyUp :

    Массивы в Паскаль.

    Построение структур данных

    Данные бывают двух видов:

    1. Простейшие данные – элементы данных, являющиеся неделимыми (числа, строки, знаки). Для простейших данных существуют стандартные типы (Integer,Real, Char, String, Boolean).
    2. Структурированные данные – это структуры, состоящие из нескольких простейших данных. Определяются пользователем в программе при помощи двух конструкций:
    1. Массив – структура однотипных данных с индексированным доступом.
    2. Запись – структура данных с доступом по идентификатору.

    Дата и время в Delphi

    Прежде чем использовать в Дельфи функции преобразования дат и времени советую подключить DateUtils

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, DateUtils, ComCtrls;

    RoundTo и SimpleRoundTo в Delphi

    Практически всегда при вычислении дробных чисел результатом выходит значение с большим количеством знаков после запятой, что неудобно для восприятия человека. Людям удобно воспринимать дробные числа, когда в дробной части максимум четыре знака. Значит, число-результат нужно привести к удобочитаемому виду. Числа можно округлить с помощью функций RoundTo() и SimpleRoundTo().

    Timer в Delphi

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

    Combobox в Delphi

    Страница библиотеки Standard

    Класс TComboBox


    Модуль stdctrls

    Кто такой системный администратор и чем он занимается

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

    ActionManager в Delphi

    Диспетчер действий ActionManager реализует перечень стандартных и нестандартных действий и эквивалентен ActionList. Но возможности ActionManager намного больше. В нем не только хранится набор действий, но он также может управлять полосами действий – визуальными компонентами, на которых расположены элементы интерфейса пользователя. К таким компонентам относятся ActionMenuBar – полоса главного меню, и ActionToolBar (инструментальная панель).

    Какие поломки могут случиться с iPhone

    В современном мире многие люди используют смартфоны марки Apple. Они многофункциональны и довольно удобны в использовании, однако и цена на последние модели телефона высокая. В связи с этим владельцы смартфонов бережно относятся к аппаратам, чтобы не допустить поломки устройства. Если же вы не уследили, и с телефоном случилась неприятность, не стоит откладывать ремонт айфона https://doctor-notebookov.ru/nashi-uslugi/remont-i-modernizatsiya/remont-apple/remont-iphone, а лучше обратиться к профессионалам, которые быстро отремонтируют устройство.

    Наиболее распространенные неисправности

    • Разбитое стекло. Причина проблемы банальна — человек роняет гаджет, при падении стекло раскалывается. Замена проводится примерно за полчаса. При этом не стоит экономить на замене модуля, так как дешевый вариант будет низкого качества, и следующий ремонт не заставит ваш долго ждать. Чтобы избежать подобных проблем, стоит использовать защитное стекло, которое стоит гораздо дешевле, чем ремонт экрана смартфона.
    • Слабый заряд батареи. Многие пользователи замечают, что со временем смартфон начинает быстро разряжаться. Это может произойти и вследствие длительного влияния погодных факторов, в частности, если вы оставите телефон на долгое время под прямыми солнечными лучами или в помещении с минусовой температурой. В этом случае батарею придется заменить.
    • Попадание телефона под воду. В таком случае стоит сразу же выключить гаджет и отнести в мастерскую, где его разберут и просушат все детали. Кроме того, специалисты проведут диагностику и смогут определить, насколько серьезно пострадал телефон, и какова стоимость ремонтных работ, если они нужны.

    Кроме того, на неисправности, которые возникают внутри телефона влияет и неоригинальное зарядное устройство. Из-за его использования телефон может нагреваться, а в отдельных случаях возможно возгорание устройства.

    Создание и инициализация переменных в C# (си шарп)

    В ходе написания программного кода всегда требуются переменные. Их можно воспринимать как зарезервированную часть памяти, в которую будут записываться промежуточные и конечные значения.

    Как облагородить могилу близкого человека

    Нельзя забывать об ушедших в иной мир близких людях. Своеобразной данью их памяти, проявлением любви к умершему является установка надгробных монументов.

    Pascal и delphi

    Профиль
    Группа: Участник
    Сообщений: 45
    Регистрация: 11.2.2003
    Где: MO

    Репутация: нет
    Всего: нет

    Klin
    Дата 13.2.2003, 17:54 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Участник Клуба
    Сообщений: 557
    Регистрация: 17.12.2002
    Где: Voronezh

    Репутация: нет
    Всего: 2

    SmaLL
    Дата 11.2.2003, 17:18 (ссылка) | (нет голосов) Загрузка .
    Цитата(Michail @ 11.2.2003, 07:21)
    Почему нельзя создать отдельные темы по Паскалю и по Дельфи? Я конечно понимаю что языки похожи, но они всётаки разные. Паскаль чисто досовский язык без виндовых элементов визуализации. Дельфи практичиски Визуал. Смысл объеденения не понятен. Чтобы найти исходник на Паскале приходится перелопатить практически все темы. Это очень не удобно. Особенно при низкой скорости соеденения.

    Не забывай, что Паскаль - это не только Турбо-Паскаль под ДОС, есть же и Турбо-Паскаль под Windows, и Борланд-Паскаль под Windows.
    А приЁмы программирования очень похожи.
    Я думаю, что этот вопрос не должен стоять.

    Профиль
    Группа: Экс. модератор
    Сообщений: 3103
    Регистрация: 28.3.2002
    Где: strawberry fields

    Репутация: 5
    Всего: 88

    Vex
    Дата 11.2.2003, 18:46 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Экс. модератор
    Сообщений: 10964
    Регистрация: 25.3.2002
    Где: Chicago

    Репутация: 10
    Всего: 207

    За последний год не набролось и десятка вопросов по Паскалю, ИМХО такой раздел не нужен.

    Модератор: Тема перемещена в обсуждение форума

    Vit
    Дата 11.2.2003, 23:03 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Участник
    Сообщений: 45
    Регистрация: 11.2.2003
    Где: MO

    Репутация: нет
    Всего: нет

    Michail
    Дата 12.2.2003, 13:58 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Участник
    Сообщений: 45
    Регистрация: 11.2.2003
    Где: MO

    Репутация: нет
    Всего: нет

    Vit Зайдя в хлебный магазин ты видиш на полках сухари. сухари. На вопрос: А где же хлеб? Тебе отвечают: Но они ведь тоже из хлеба. Зачем тогда завозить хлеб.

    Так и здесь народ зайдя на форум ищет задаваемые вопросы по Паскалю, но ненаходит их, зато видет Дельфи. Дельфи. На других форумах вопросы по паскалю задаются весма активно, но весьма не активно на них отвечают.

    Michail
    Дата 12.2.2003, 14:30 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Экс. модератор
    Сообщений: 3103
    Регистрация: 28.3.2002
    Где: strawberry fields

    Репутация: 5
    Всего: 88

    Vex
    Дата 12.2.2003, 17:43 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Участник Клуба
    Сообщений: 1938
    Регистрация: 7.10.2002
    Где: Краснодар

    Репутация: нет
    Всего: 25

    Michail я не понимаю, что по Паскалю там нельзя задать вопрос?
    ИМХО если разделить, то Паскаль вохможно просто удалят.

    Klin
    Дата 13.2.2003, 03:25 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Экс. модератор
    Сообщений: 10964
    Регистрация: 25.3.2002
    Где: Chicago

    Репутация: 10
    Всего: 207

    Vit
    Дата 13.2.2003, 03:31 (ссылка) | (нет голосов) Загрузка .

    Профиль
    Группа: Модератор
    Сообщений: 4423
    Регистрация: 14.8.2002
    Где: Харьков

    Репутация: 1
    Всего: 57

    December
    Дата 13.2.2003, 05:40 (ссылка) | (нет голосов) Загрузка .
    Цитата(Vex @ 11.2.2003, 09:46)
    Вообще-то Delphi - это не язык программирования, это интегрированная среда разработки, в Делфи Object Pascal используется как язык программирования.

    Начиная с D7 Object Pascal официально переименовывается в язык Delphi - What's new section of help.

    Профиль
    Группа: Завсегдатай
    Сообщений: 7209
    Регистрация: 15.9.2002
    Где: Kazakhstan, Astan a

    Репутация: 1
    Всего: 154

    Medved
    Дата 13.2.2003, 06:56 (ссылка) | (нет голосов) Загрузка .
    Цитата
    Ваш пример с сухарями впечатляет

    Я долго смеялся. правда. Да, пример с сухарями действительно впечатляет. Но есть логика, а есть псевдологика. Логика вещь интересная. И с помощью логики можно доказать, что рыба- это птица. (Или вспомните пример из фильма "Олигарх" где с помощью логики доказано, что крокодил более зеленее, чем длинее :-)
    Если честно, я так и не понял, почему завязалась такая дисскуссия. Я ИМХО считаю, что Delphi - это продолжение Pascal, как С++, продолжение С. И по сути, очень многие кто сейчас програмирует на Delphi, начинали именно с Pascal. По крайней мере, все мои знакомые программисты, и я сам именно так и делали. И фактически любой достаточно граммотный дельфист ответит на любой вопрос по паскалю.

    А если вернуться к примеру с сухарями, то можно провести аналогию с тем, что Michail предлагает хлебный отдел, разделить на несколько разных отделов, в одном продаются только сухари, в другом только батоны, в третьем только булочки и т.д. Зачем? Если я и так знаю, что сухари продаются только в хлебном отделе, и искать их не следует в каком-либо другом.

    Профиль
    Группа: Завсегдатай
    Сообщений: 7209
    Регистрация: 15.9.2002
    Где: Kazakhstan, Astan a

    Репутация: 1
    Всего: 154

    Delphi и Pascal

    Pascal
    Трудно рассказать что-то новое о том, что хорошо известно всем. Действительно, вряд ли найдется в нашей стране программист или просто выпускник средней школы, который не знал бы (или не слышал) об этом языке программирования. Основные концепции языка были разработаны в 1967-1968 г. профессором Николаусом Виртом (Niklaus Wirth)(Биографию Вирта можно прочитать на http://cc.kzoo.edu/ k98ja01/wirth.html) и опубликованы в 1971 году (The Programming Language Pascal Acta Informatica, 1 (Jun 1971), 35-63). Стандарт языка был разработан им в 1974 г.(PASCAL - User Manual and Report, ISO Pascal Standard Kathleen Jensen and Niklaus Wirth) совместно с Кетлин Йенсен (Kathleen Jensen). Паскаль достаточно быстро превратился из средства, предназначенного для обучения студентов программированию, в инструмент, который стали использовать для создания больших программных проектов. Заметим, что ни один из последующих языков, разработанных автором (а Вирт является создателем Модулы и Оберона), не получил такого распространения. Трудно сказать, с чем это связано. Возможно, с тем, что язык удачно сочетает простоту с выразительностью и силой. Возможно, что просто он оказался в нужный момент на нужном месте, поскольку на момент создания языка, получившего свое имя в честь великого французского математика, в распоряжении программистов было весьма и весьма немного языков высокого уровня. И что самое главное, все они были разработаны для решения конкретных прикладных задач и во многом являлись продуктом , а не результатом серьезного научного труда. Фортран, названный одним из пионеров программирования Дейкстрой (Edsger Dijkstra) инфантильным дезорганизатором, предназначался только для математических расчетов и не выдерживал никакой критики с точки зрения ограничения доступа к данным и отсутствия поддержки структурного программирования. Об интерпретаторе Бейсик (тогда еще без приставки Visual) нельзя было говорить без слез. Кобол был ориентирован на решение экономических задач, a PL/I - чрезмерно сложен и принадлежал скорее к области проблем, чем к области решений. И вот тут появляется язык, на порядок отличающийся от них своим качеством. Основное, что привлекало к нему, - логичность, поддержка концепций структурного и процедурного программирования, работа с динамической памятью, возможность создания своих типов данных. Все это стало теперь настолько привычным, что трудно представить, как можно программировать без использования этих жизненно необходимых возможностей.

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

    Еще одной причиной, которая позволила языку перейти в категорию бестселлеров, стала поддержка разработчиков коммерческого ПО. И тут мы не можем пройти мимо фирмы Borland (ныне Inprise). Разработанный ею Turbo Pascal во всех его модификациях является в России одним из самых популярных продуктов. Интегрированная оболочка, которая включает в себя редактор, компилятор, компоновщик и отладчик, вместе с интерактивной справочной системой сделали разработку программ на Паскале делом простым и понятным практически любому человеку. Но так было не всегда. Например, в начале восьмидесятых автору довелось поработать с одним из первых компиляторов Паскаля на платформах DEC. В нем сначала нужно было в редакторе создавать программу, затем однопроходный компилятор выдавал код на ассемблере, далее приходилось транслировать его в объектный код, компоновать с системными библиотеками и только после этого запускать программу. Поиск ошибок (без встроенного отладчика, который сейчас просто показывает вам строку, где произошла ошибка) был делом, требующим терпения, и, самое главное, процессом весьма длительным.

    Кроме создания интегрированной оболочки, Borland ввел в Pascal поддержку модульного программирования, а начиная с версии 5, и поддержку объектно-ориентированного программирования.

    В настоящее время действуют три стандарта языка. Первый из них - нерасширенный Паскаль (unextended Pascal) был разработан в 1983 году(Смотрите стандарты ANSI/IEEE 770Х3 97-1993 и ISO 7185:1983. Стандарты ISO доступны по адресу http://www.iso.ch/welcome.html) и практически полностью совпадает с описанием языка в нотации Йенсен-Вирта. Второй - Extended Pascal - содержит расширения, касающиеся модульного программирования (раздельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация), и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и т д.)(Смотрите стандарты ANSI/IEEE 770Х3.160-1989 и ISO/IEC 10206:1991). Последний - объектный Паскаль (Object-Oriented Extensions to Pascal), в отличие от первых двух, формально не утвержден, но оформлен в виде отчета (ANSI Technical Report) в 1993 г.(Смотрите ANSI/X3-TR-13-1994) Объектный Паскаль поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и ряд других атрибутов объектно-ориентированного программирования.

    Следует иметь в виду, что практически ни один из коммерческих компиляторов языка не имеет полной поддержки даже нерасширенного Паскаля. Как правило, это касается некоторых отличий в синтаксисе языка. Причем все коммерческие оболочки привязаны к той или иной операционной системе. Это касается в первую очередь операций ввода/вывода информации, связанных с особенностями ОС (файловой системой, графикой), и использования памяти.

    Delphi
    В начале 90-х годов в мир ПК пришли операционные системы со встроенным графическим интерфейсом. Этот приход произвел настоящую революцию, которая позволила привлечь к работе с компьютером миллионы пользователей, ранее даже не помышлявших об этом. Распространение Windows и образование империи Microsoft вызвало необходимость в массовом создании программ, использующих все возможности интерфейса этой операционной системы. Delphi (произносится ) оказался одним из первых продуктов, который сделал этот процесс простым и понятным даже начинающим разработчикам. Причем, в отличие от других интегрированных оболочек (Visual Basic или SQL Windows), которые появились на рынке в это же время, Delphi позволяет разработчикам создавать новые компоненты, используемые в дальнейшем при визуальном программировании. В основу Delphi положен язык Object Pascal, да и сама система написана почти полностью на этом языке.

    В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования.

    Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки - и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

    Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++. К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiStrmg) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных.

    Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать проектов и , создающих проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE).

    Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

    Ну, и одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux. Более подробную информацию о Delphi можно получить на сайтах www.inprise.com и www.inprise.ru. Существует большое количество сайтов, посвященных Delphi, например «Королевство Delphi» - delphi.vitpc.com, Torry's Delphi Pages - www.torry.ru. Последний содержит большое число ссылок на ресурсы, связанные с Delphi.

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

    Листинг. Object Раsсаl

    Medved
    Дата 13.2.2003, 08:12 (ссылка) | (нет голосов) Загрузка .
    Код
    Program BYTE_Example; // Oject Pascal, Delphi 5
    <$APPTYPE CONSOLE>// Прагма, делающая приложение консольным

    uses SysUtils, Classes; // Используемые внешне модули

    type
    ТМуArray = class (TObject) // Класс - динамический массив
    private
    FArray : array of integer; // Поле для хранения данных
    FPos : integer; // Счетчик введенных элементов
    public
    function GetLastNumber:integer; // номер последнего элемента
    function GetElement(Poz:integer):integer; // Элемент по номеру
    procedure AddElement(Value:integer); // Добавление в конец массива
    constructor create; // Конструктор
    destructor Destroy; override; // Деструктор
    end;

    const delta=100; // Приращение динамического массива

    procedure TMyArray.AddElenient(Value: integer);
    begin
    if FPos>High(FArray) then // Нужно увеличить массив?
    SetLength(FArray,Length(FArray)+delta); // Увеличим на Delta
    FArray[FPos]:=Value; // Добавляем элемент
    Inc(FPos);
    end;

    constructor ТМуArray.create; // Конструктор динамического массива
    begin
    inherited, // Вызываем конструктор предка
    SetLength(FArray,delta); // Создали массив из delta-элементов
    FPos:=0; // Счетчик элементов массива
    end;

    destructor ТМуАrrау.Destroy; // Деструктор динамического массива
    begin // Уничтожаем объект
    FArray:=nil; // Удаляем массив
    inherited; // Вызываем деструктор предка
    end;

    function ТМуАrrау.GetElement(Poz: integer): integer;
    begin result := FArray[Poz] end; // Читаем элемент по номеру

    function ТМуАrrау.GetLastNumber: integer;
    begin result :=FPos-1; end; // Получаем количество элементов массива

    procedure ReadElementsFromFile; // Читаем из файла и выводим нечетные на экран

    var
    F: file of Integer; // Файл с целыми числами
    МуАrrау: ТМуАrrау; // Объект для хранения чисел
    i: integer; // Переменная цикла
    begin
    МуArray := ТМуArray. create; // Создали объект-массив
    AssignFile(F, 'TestFile.dat'); // Открываем файл
    reset(F);
    while not eof (F) do
    begin
    read(F,I); // Читаем элемент
    МуArray.AddElement(I); // Добавляем элемент в массив
    end;
    closeFile(F); // Закрываем файл
    for i := МуArray.GetLastNumber downto 0 do // Выводим в обратном порядке
    if МуArray.GetElement(i) mod 2 <> 0 then // Выводим только нечетные
    writeln( intTostr(MyArray.GetElement(i))); // элементы в колонку
    МуArray.Free; // Уничтожаем массив
    end;

    begin // Главный модуль
    ReadElementsFromFile
    end.

    Профиль
    Группа: Участник
    Сообщений: 45
    Регистрация: 11.2.2003
    Где: MO

    Репутация: нет
    Всего: нет

    Michail
    Дата 13.2.2003, 13:55 (ссылка) | (нет голосов) Загрузка .
    Цитата
    Program BYTE_Example; // Oject Pascal, Delphi 5
    <$APPTYPE CONSOLE>// Прагма, делающая приложение консольным

    uses SysUtils, Classes; // Используемые внешне модули

    type
    ТМуArray = class (TObject) // Класс - динамический массив
    private
    FArray : array of integer; // Поле для хранения данных
    FPos : integer; // Счетчик введенных элементов
    public
    function GetLastNumber:integer; // номер последнего элемента
    function GetElement(Poz:integer):integer; // Элемент по номеру
    procedure AddElement(Value:integer); // Добавление в конец массива
    constructor create; // Конструктор
    destructor Destroy; override; // Деструктор
    end;

    const delta=100; // Приращение динамического массива

    procedure TMyArray.AddElenient(Value: integer);
    begin
    if FPos>High(FArray) then // Нужно увеличить массив?
    SetLength(FArray,Length(FArray)+delta); // Увеличим на Delta
    FArray[FPos]:=Value; // Добавляем элемент
    Inc(FPos);
    end;

    constructor ТМуArray.create; // Конструктор динамического массива
    begin
    inherited, // Вызываем конструктор предка
    SetLength(FArray,delta); // Создали массив из delta-элементов
    FPos:=0; // Счетчик элементов массива
    end;

    destructor ТМуАrrау.Destroy; // Деструктор динамического массива
    begin // Уничтожаем объект
    FArray:=nil; // Удаляем массив
    inherited; // Вызываем деструктор предка
    end;

    function ТМуАrrау.GetElement(Poz: integer): integer;
    begin result := FArray[Poz] end; // Читаем элемент по номеру

    function ТМуАrrау.GetLastNumber: integer;
    begin result :=FPos-1; end; // Получаем количество элементов массива

    procedure ReadElementsFromFile; // Читаем из файла и выводим нечетные на экран

    var
    F: file of Integer; // Файл с целыми числами
    МуАrrау: ТМуАrrау; // Объект для хранения чисел
    i: integer; // Переменная цикла
    begin
    МуArray := ТМуArray. create; // Создали объект-массив
    AssignFile(F, 'TestFile.dat'); // Открываем файл
    reset(F);
    while not eof (F) do
    begin
    read(F,I); // Читаем элемент
    МуArray.AddElement(I); // Добавляем элемент в массив
    end;
    closeFile(F); // Закрываем файл
    for i := МуArray.GetLastNumber downto 0 do // Выводим в обратном порядке
    if МуArray.GetElement(i) mod 2 <> 0 then // Выводим только нечетные
    writeln( intTostr(MyArray.GetElement(i))); // элементы в колонку
    МуArray.Free; // Уничтожаем массив
    end;

    begin // Главный модуль
    ReadElementsFromFile
    end.

    А теперь сделайте тоже самое на Паскале не используя "внешние модули".

    Профиль
    Группа: Участник Клуба
    Сообщений: 1938
    Регистрация: 7.10.2002
    Где: Краснодар

    Pascal и delphi

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

    История Delphi начинается с 60-х гг., когда профессор Н.Вирт разработал язык высокого уровня Pascal. Это был лучший язык для изучения программирования, и для создания программ для операционной системы MS-DOS. Затем, в 1983 г., А. Хейлсберг совместно с другими программистами, которые только что организовали компанию Borland, разработал компилятор Turbo Pascal, который стал следующим шагом в эволюции Delphi. Затем появился Object Pascal, который уже использовал Объектно-Ориентированный подход к программированию. Когда появилась первая версия Windows - Windows 3.10, Программисты Borland создали Delphi 1. Это уже была объектно-ориентированная среда для визуальной разработки программ, основанная на языке Object Pascal.

    Основу Delphi составляет не только сам язык, но и RAD (Rapid Application Development) - среда быстрой разработки программ. Благодаря визуальному программированию, а также достаточно большой библиотеке визуальных компонентов, Delphi позволяет создавать программы наиболее быстро и эффективно, принимая на себя основную работу, и оставляя программисту творческий процесс. Разумеется, возможность быстрого создания профессиональных приложений для Windows делает Delphi - программистов востребованными во всех отраслях человеческой деятельности.

    Целевая платформа

    Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ GNU/Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET. При этом высказывались предположения, что эти два факта взаимосвязаны.

    Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как GNU/Linux, Mac OS X и Windows CE.

    Также предпринимались попытки использования языка в проектах GNU и написания компилятора для GCC.

    Object Pascal. Первый шаг или инструмент на всю жизнь

    То ли дело Object Pascal. Кто-то на уроках информатики так и не сел за его освоение, кто-то просто сделал скоропалительные выводы по слову Pascal в названии, остальные же имели удовольствие насладиться чудесной IDE Delphi и написать с её помощью свои первые десктопные приложения, освоив встроенные интерфейсы, сетевые протоколы, мультимедиа и многое другое.

    Конечно, сегодня Object Pascal выглядит устаревшим, ограниченным и грузным, но означает ли это, что можно списать его в утиль? Вы удивитесь, но нет. Пройдя по данной ссылке вы найдёте не менее 300 вакансий по России, касающихся исключительно Delphi. В декабрьском рейтинге TIOBE Object Pascal занял 15 место по количеству запросов в поисковых системах. То есть это язык, не просто сохраняющий свою полезность, это актуальный инструмент современного разработчика. Впрочем, не всё так радужно. Давайте по порядку.

    Плюсы и минусы

    Когда речь заходит об обсуждение сильных и слабых сторон Object Pascal, стоит говорить не столько о самом языке, сколько о Delphi – главном представителю «семейства», ввиду его востребованности и освоенности программистами. Итак, поверхностно взглянем на его характеристики:

    Минимальные затраты времени на освоение IDE и создание прикладных приложений.

    Малое количество библиотек по сравнению с С/С++/Object C;

    Недостаточная гибкость из-за того, что язык создавался не с нуля, а по сути эволюционировал от Pascal;

    Слабая поддержка, как со стороны разработчиков IDE, так и самого языка;

    Таким образом с определёнными допущениями можно утверждать, что Object Pascal мог бы быть на вершине мира (хоть какое-то время), если бы интерес простых программистов был поддержан создателями языка и сопутствующих платформ, а, например, UNIX-системы создавались не на С, а на Object Pascal. Впрочем, история не знает сослагательного наклонения, а данный язык и без того нашёл своё место в IT-мире.

    Область применения

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

    При помощи Object Pascal были созданы проигрыватель The KMPlayer, Skype, Total Commander, почтовый клиент The Bat! и даже старая-добрая игра «Космические рейнджеры». То есть сфера применения действительно широка, вопрос лишь в том, насколько сильно в своё время вы полюбили Delphi, что вам теперь готовы проходить через все лишения и ограничения, лишь бы не использовать (изучать) более подходящий для ваших целей язык.

    Работа

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

    Во-вторых, это всё-таки отмирающий язык. Трудно представить, что без эволюции этот язык будет удерживаться на аналогичном уровне востребованности хотя бы ещё 10 лет. А значит делать на Object Pascal долгосрочную ставку не слишком разумно.


    Третье, и самое главное – на одном лишь языке Object Pascal (Delphi) вы точно далеко не уедете. Как минимум, потребуются стандартные сопутствующие знания БД (SQL) и систем контроля версий (Git/SVN). И при этом даже на конкретных вакансиях Delphi-программиста преимущества получают те, у кого есть за плечами опыт работы и с другими языками (Python, JS, C и т. д.).

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

    Полезные ссылки

    А теперь несколько ссылок для изучения. Пара западных популярных ресурсов:

    SAMS Delphi – самоучитель, обещающий изучение Delphi за 21 день;

    Beginner's Guide to Delphi Programming – ещё один довольно неплохой самоучитель с множеством встроенных полезных ссылок.

    Впрочем, как было уже сказано, в России Object Pascal всегда был невероятно популярен, так что на нашем интернет-пространстве тоже можно найти крайне качественные сайты:

    DelphiSite – обучающие материалы, готовые программы, рубрика вопрос-ответ и многое другое;

    The Delphi – аналогичный ресурс, просто другими словами.

    И ещё пара книг в помощь:

    Delphi в примерах, играх и программах – увлекательное чтиво, подойдёт младшей возрастной категории из-за манеры подачи материала;

    Базы данных в Delphi 7. Самоучитель – более серьёзный уровень книги, акцентирующий своё внимание на применении Delphi для работы с БД.

    А какое у вас отношение к Object Pascal / Delphi?

    Pascal – инструмент, знакомый подавляющему большинству отечественных программистов со школьной скамьи. Ещё когда в мире не существовало Scratch, Python только набирал свою силу, детей пытались познакомить с азами кодирования при помощи этого незамысловатого, можно сказать, процедурного языка. Возможности его сильно ограничены, поэтому практически никому в голову в 21 веке (да и в 20-м, тоже) не приходило в голову серьёзно использовать его в работе.

    То ли дело Object Pascal. Кто-то на уроках информатики так и не сел за его освоение, кто-то просто сделал скоропалительные выводы по слову Pascal в названии, остальные же имели удовольствие насладиться чудесной IDE Delphi и написать с её помощью свои первые десктопные приложения, освоив встроенные интерфейсы, сетевые протоколы, мультимедиа и многое другое.

    Конечно, сегодня Object Pascal выглядит устаревшим, ограниченным и грузным, но означает ли это, что можно списать его в утиль? Вы удивитесь, но нет. Пройдя по данной ссылке вы найдёте не менее 300 вакансий по России, касающихся исключительно Delphi. В декабрьском рейтинге TIOBE Object Pascal занял 15 место по количеству запросов в поисковых системах. То есть это язык, не просто сохраняющий свою полезность, это актуальный инструмент современного разработчика. Впрочем, не всё так радужно. Давайте по порядку.

    Плюсы и минусы

    Когда речь заходит об обсуждение сильных и слабых сторон Object Pascal, стоит говорить не столько о самом языке, сколько о Delphi – главном представителю «семейства», ввиду его востребованности и освоенности программистами. Итак, поверхностно взглянем на его характеристики:

    Минимальные затраты времени на освоение IDE и создание прикладных приложений.

    Малое количество библиотек по сравнению с С/С++/Object C;

    Недостаточная гибкость из-за того, что язык создавался не с нуля, а по сути эволюционировал от Pascal;

    Слабая поддержка, как со стороны разработчиков IDE, так и самого языка;

    Таким образом с определёнными допущениями можно утверждать, что Object Pascal мог бы быть на вершине мира (хоть какое-то время), если бы интерес простых программистов был поддержан создателями языка и сопутствующих платформ, а, например, UNIX-системы создавались не на С, а на Object Pascal. Впрочем, история не знает сослагательного наклонения, а данный язык и без того нашёл своё место в IT-мире.

    Область применения

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

    При помощи Object Pascal были созданы проигрыватель The KMPlayer, Skype, Total Commander, почтовый клиент The Bat! и даже старая-добрая игра «Космические рейнджеры». То есть сфера применения действительно широка, вопрос лишь в том, насколько сильно в своё время вы полюбили Delphi, что вам теперь готовы проходить через все лишения и ограничения, лишь бы не использовать (изучать) более подходящий для ваших целей язык.

    Работа

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

    Во-вторых, это всё-таки отмирающий язык. Трудно представить, что без эволюции этот язык будет удерживаться на аналогичном уровне востребованности хотя бы ещё 10 лет. А значит делать на Object Pascal долгосрочную ставку не слишком разумно.

    Третье, и самое главное – на одном лишь языке Object Pascal (Delphi) вы точно далеко не уедете. Как минимум, потребуются стандартные сопутствующие знания БД (SQL) и систем контроля версий (Git/SVN). И при этом даже на конкретных вакансиях Delphi-программиста преимущества получают те, у кого есть за плечами опыт работы и с другими языками (Python, JS, C и т. д.).

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

    Полезные ссылки

    А теперь несколько ссылок для изучения. Пара западных популярных ресурсов:

    SAMS Delphi – самоучитель, обещающий изучение Delphi за 21 день;

    Beginner's Guide to Delphi Programming – ещё один довольно неплохой самоучитель с множеством встроенных полезных ссылок.

    Впрочем, как было уже сказано, в России Object Pascal всегда был невероятно популярен, так что на нашем интернет-пространстве тоже можно найти крайне качественные сайты:

    DelphiSite – обучающие материалы, готовые программы, рубрика вопрос-ответ и многое другое;

    The Delphi – аналогичный ресурс, просто другими словами.

    И ещё пара книг в помощь:

    Delphi в примерах, играх и программах – увлекательное чтиво, подойдёт младшей возрастной категории из-за манеры подачи материала;

    Базы данных в Delphi 7. Самоучитель – более серьёзный уровень книги, акцентирующий своё внимание на применении Delphi для работы с БД.

    А какое у вас отношение к Object Pascal / Delphi?

    Object Pascal

    Overview Edit

    Object Pascal is a draft for an object oriented ANSI/ISO standard of the venerable Pascal programming language (circa 1989-1990). The draft never made it to a full standard, but some Apple dialects are pretty close to it.

    Object Pascal is the programming language you use in Delphi. It is mostly similar to Turbo Pascal, but Borland has added some features to it. I will deal with these later. Object Pascal is obviously an object oriented language. For those who don't know what this is I'll give a brief summary in the next section. Those who are familiar with OOP can skip it.

    The Object Pascal dialect used in Delphi was basically a strongly (and incompatibly) enhanced version of the proposals in this draft is the native language of Delphi. (e..g in the original Object Pascal, all methods are virtual automatically). Delphi when started was regarded more as an IDE just like Visual Studio for RAD development purpose uptil Delphi version 6.0. However, from version 7.0 Delphi 7.0 itself was regarded as the language and the Object Pascal lost its name.

    Delphi has undergone through lot of hands first from Borland Inc to Inprise (which infact was Borland itself) and then to CodeGear and now eventually is being sold out to Embarcadero Technologies. The most recent release of Delphi as of now is Delphi XE launched in the year 2010.

    Name Issues Edit

    Technically speaking the developers of Delphi no longer call the language "Object Pascal" but consider it a variant of Object Pascal called "The Delphi Programming Language". This may be due to many non-ANSI standard changes they desired to include or possibly to make their extensions proprietary. Another reason might be more trademark related. But if it looks like pascal and quacks like pascal.

    Free Pascal still calls the language Object Pascal, even though it is nearly 100% compatible to Delphi's version. Free Pascal is slowly also building a dialect closer to classical Object Pascal (for Mac Pascal compability).

    Free Pascal also features another object oriented Pascal for Mac GUI (COCOA) interfacing, see Objective Pascal

    Coding in Pascal Edit

    Comments
    Delphi allows developers with three types of commentings. Both single line and multiple line commenting is allowed to the developers. The different types of comments allowed are -

    • (* this is another comment *)
    • // this is a comment up to the end of the line

    The opening curly bracket '<' initiates a comment while the closing curly bracket '>' suggests the termination of the multi line comment. Similar is the case with the combination of open bracket and star '(*' and star and closing bracket '*)' for multi line comments. A single line comment can be made by simple two forward slashes '//'. It should be noted that anything written after the '//' will be ignored by the compiler.

    <$R *.DFM>which a developer can commonly find in unit file associated with a form file.

    Syntax Highlighting Edit

    To make it easier to read and write Pascal code, the Delphi editor has a feature called color syntax highlighting. Depending on the meaning in Pascal of the words you type in the editor, they are displayed using different colors. There are several 3rd party IDE plugins that offer enhancements for Syntax Highlighting.

    • cnWizards (open source)
    • Brilliant Code for Delphi. (commercial)
    • Castalia (No longer available, but has been integrated in later Delphi versions

    Expressions and Operators Edit

    Operators and Precedence

    Unary Operators (Highest Precedence)

    • '@' Address of the variable or function (returns a pointer)
    • 'not' Boolean or bitwise not

    Multiplicative and Bitwise Operators

    • '*' Arithmetic multiplication or set intersection
    • '/' Floating-point division
    • 'div' Integer division
    • 'mod' Modulus (the remainder of integer division)
    • 'as' Allows a type-checked type conversion among at runtime (part of the RTTI support)
    • 'and' Boolean or bitwise and
    • 'shl' Bitwise left shift
    • 'shr' Bitwise right shift
    • '+' Arithmetic addition, set union, string concatenation, pointer offset addition
    • '-' Arithmetic subtraction, set difference, pointer offset subtraction
    • 'or' Boolean or bitwise or
    • 'xor' Boolean or bitwise exclusive or

    Relational and Comparison Operators (Lowest Precedence)

    • '=' Test whether equal
    • '<>' Test whether not equal
    • ' ' Test whether greater than
    • ' =' Test whether greater than or equal to, or a superset of a set
    • 'in' Test whether the item is a member of the set
    • 'is' Test whether object is type-compatible (another RTTI operator)

    Set Operators Edit

    The set operators includes: union (+), difference (-), intersection (*), membership test (in), plus some relational operators. To add an element to a set, you can make the union of the set with another one that has only the element you need.

    Here's a Delphi example related to font styles:

    • Style := Style + [fsBold];
    • Style := Style + [fsBold, fsItalic] - [fsUnderline];

    Variables Edit

    Constants Edit

    When you declare a constant, the compiler can choose whether to assign a memory location to the constant, and save its value there, or to duplicate the actual value each time the constant is used. This second approach makes sense particularly for simple constants.

    Resource String Constants Edit

    A string constant defined with the resourcestring directive is stored in the resources of the program, in a string table.

    The interesting aspect of this is that if you examine it with a resource explorer you'll see the new strings in the resources. This means that the strings are not part of the compiled code but stored in a separate area of the executable file.

    The advantage of resources is in an efficient memory handling performed by Windows and in the possibility of localizing a program (translating the strings to a different language) without having to modify its source code.

    Data Types Edit

    In Pascal there are several predefined data types, which can be divided into three groups: ordinal types, real types, and strings.

    Ordinal Types Edit

    Ordinal Types Routines Edit

    Real Types Edit

    Real types represent floating-point numbers in various formats. The smallest storage size is given by Single numbers, which are implemented with a 4-byte value. Then there are Double floating-point numbers, implemented with 8 bytes, and Extended numbers, implemented with 10 bytes.

    Date and Time Edit

    TDateTime is not a predefined type the compiler understands, but it is defined in the system unit as:

    System Routines for the TDateTime Type:

    Besides calling TimeToStr and DateToStr you can use the more powerful FormatDateTime function, as I've done in the last method above (see the Delphi Help file for details on the formatting parameters). Notice also that time and date values are transformed into strings depending on Windows international settings. Delphi reads these values from the system, and copies them to a number of global constants declared in the SysUtils unit.

    Some of them are:

    • DateSeparator: Char;
    • ShortDateFormat: string;
    • LongDateFormat: string;
    • TimeSeparator: Char;
    • TimeAMString: string;
    • TimePMString: string;
    • ShortTimeFormat: string;
    • LongTimeFormat: string;
    • ShortMonthNames: array [1..12] of string;
    • LongMonthNames: array [1..12] of string;
    • ShortDayNames: array [1..7] of string;
    • LongDayNames: array [1..7] of string;

    Typecasting and Type Conversions Edit

    System Routines for Type Conversion:

    Subrange Types Edit

    A subrange type defines a range of values within the range of another type (hence the name subrange). You can define a subrange of the Integer type, from 1 to 10 or from 100 to 1000, or you can define a subrange of the Char type, as in:

    In the definition of a subrange, you don’t need to specify the name of the base type. You just need to supply two constants of that type. The original type must be an ordinal type, and the resulting type will be another ordinal type.

    When you have defined a subrange, you can legally assign it a value within that range.

    This code is valid:

    But this one is not:

    Writing the code above results in a compile-time error, "Constant expression violates subrange bounds." If you write the following code instead:

    Delphi will compile it. At run-time, if you have enabled the Range Checking compiler option (in the Compiler page of the Project Options dialog box), you’ll get a Range check error message.

    Enumerated Types Edit

    Enumerated types constitute another user-defined ordinal type. Instead of indicating a range of an existing type, in an enumeration you list all of the possible values for the type. In other words, an enumeration is a list of values.

    Here are some examples:

    Each value in the list has an associated ordinality, starting with zero. When you apply the Ord function to a value of an enumerated type, you get this zero-based value. For example, Ord (Diamond) returns 1.

    The Delphi VCL (Visual Component Library) uses enumerated types in many places.

    For example, the style of the border of a form is defined as follows:

    When the value of a property is an enumeration, you usually can choose from the list of values displayed in the Object Inspector, as shown in Figure.

    Figure: An enumerated type property in the Object Inspector

    The Delphi Help file generally lists the possible values of an enumeration. As an alternative you can use the OrdType program, available on [1], to see the list of the values of each Delphi enumeration, set, subrange, and any other ordinal type.

    Set Types Edit

    Set types indicate a group of values, where the list of available values is indicated by the ordinal type the set is based onto. These ordinal types are usually limited, and quite often represented by an enumeration or a subrange. If we take the subrange 1..3, the possible values of the set based on it include only 1, only 2, only 3, both 1 and 2, both 1 and 3, both 2 and 3, all the three values, or none of them.

    A variable usually holds one of the possible values of the range of its type. A set-type variable, instead, can contain none, one, two, three, or more values of the range. It can even include all of the values.

    Here is an example of a set:

    Now I can define a variable of this type and assign to it some values of the original type. To indicate some values in a set, you write a comma-separated list, enclosed within square brackets. The following code shows the assignment to a variable of several values, a single value, and an empty value:

    In Delphi, a set is generally used to indicate nonexclusive flags. For example, the following two lines of code (which are part of the Delphi library) declare an enumeration of possible icons for the border of a window and the corresponding set type.

    A set-type property in the Object Inspector:

    Another property based on a set type is the style of a font. Possible values indicate a bold, italic, underline, and strikethrough font. Of course the same font can be both italic and bold, have no attributes, or have them all. For this reason it is declared as a set. You can assign values to this set in the code of a program as follows:

    Array Types Edit

    Array types define lists of a fixed number of elements of a specific type. You generally use an index within square brackets to access to one of the elements of the array. The square brackets are used also to specify the possible values of the index when the array is defined. For example, you can define a group of 24 integers with this code:

    In the array definition, you need to pass a subrange type within square brackets, or define a new specific subrange type using two constants of an ordinal type. This subrange specifies the valid indexes of the array. Since you specify both the upper and the lower index of the array, the indexes don’t need to be zero-based, as is necessary in C, C++, Java, and other programming languages.

    Simple and Compound Statements Edit

    A Pascal statement is simple when it doesn't contain any other statements. Examples of simple statements are assignment statements and procedure calls. Simple statements are separated by a semicolon:

    Usually, statements are part of a compound statement, marked by begin and end brackets. A compound statement can appear in place of a generic Pascal statement.

    Here is an example:

    Both versions are correct. The first version has a useless (but harmless) semicolon. This semicolon is, in fact, a null statement; that is, a statement with no code. Notice that, at times, null statements can be used inside loops or in other particular cases.

    Conditional Statements Edit

    A conditional statement is used to execute either one of the statements it contains or none of them, depending on some test. There are two basic flavors of conditional statements: if statements and case statements.

    Notice that you cannot have a semicolon after the first statement and before the else keyword, or the compiler will issue a syntax error. The if-then-else statement, in fact, is a single statement, so you cannot place a semicolon in the middle of it.

    If your if statements become very complex, at times you can replace them with case statements. A case statement consists in an expression used to select a value, a list of possible values, or a range of values. These values are constants, and they must be unique and of an ordinal type. Eventually, there can be an else statement that is executed if none of the labels correspond to the value of the selector.

    Here are two simple examples:

    Loops in Pascal Edit

    The Pascal language has the typical repetitive statements of most programming languages, including for, while, and repeat statements. Most of what these loops do will be familiar if you've used other programming languages, so I'll cover them only briefly.

    The for loop in Pascal is strictly based on a counter, which can be either increased or decreased each time the loop is executed. Here is a simple example of a for loop used to add the first ten numbers.

    This same for statement could have been written using a reverse counter:

    The for loop in Pascal is less flexible than in other languages (it is not possible to specify an increment different than one), but it is simple and easy to understand. If you want to test for a more complex condition, or to provide a customized counter, you need to use a while or repeat statement, instead of a for loop.

    Note: The counter of a for loop doesn't need to be a number. It can be a value of any ordinal type, such as a character or an enumerated type.

    While and Repeat Statements

    The difference between the while-do loop and the repeat-until loop is that the code of the repeat statement is always executed at least once. You can easily understand why by looking at a simple example:

    If the initial value of I or J is greater than 100, the statements inside the repeat-until loop are executed once anyway.

    The other key difference between these two loops is that the repeat-until loop has a reversed condition. The loop is executed as long as the condition is not met. When the condition is met, the loop terminates. This is the opposite from a while-do loop, which is executed while the condition is true. For this reason I had to reverse the condition in the code above to obtain a similar statement.

    The With Statement Edit

    But it is certainly easier to write this code:

    When you are writing complex code, the with statement can be effective and spares you the declaration of some temporary variables, but it has a drawback. It can make the code less readable, particularly when you are working with different objects that have similar or corresponding properties.

    A further drawback is that using the with statement can allow subtle logical errors in the code that the compiler will not detect.

    This code changes the Caption and the Width of the button, but it affects the Color property of the form, not that of the button! The reason is that the TButton components don't have the Color property, and since the code is executed for a form object (we are writing a method of the form) this object is accessed by default.

    If we had instead written:

    Pascal Procedures and Functions Edit

    In Pascal, a routine can assume two forms: a procedure and a function. In theory, a procedure is an operation you ask the computer to perform, a function is a computation returning a value. This difference is emphasized by the fact that a function has a result, a return value, while a procedure doesn't. Both types of routines can have multiple parameters, of given data types.

    Reference Parameters Edit

    Pascal routines allow parameter passing by value and by reference. Passing parameters by value is the default: the value is copied on the stack and the routine uses and manipulates the copy, not the original value.

    Passing a parameter by reference means that its value is not copied onto the stack in the formal parameter of the routine (avoiding a copy often means that the program executes faster). Instead, the program refers to the original value, also in the code of the routine. This allows the procedure or function to change the value of the parameter. Parameter passing by reference is expressed by the var keyword.

    Here is an example of passing a parameter by reference using the var keyword:

    In this case, the parameter is used both to pass a value to the procedure and to return a new value to the calling code.

    The value of the X variable becomes 20, because the function uses a reference to the original memory location of X, affecting its initial value.

    Passing parameters by reference makes sense for ordinal types, for old-fashioned strings, and for large records. Delphi objects, in fact, are invariably passed by value, because they are references themselves. For this reason passing an object by reference makes little sense (apart from very special cases), because it corresponds to passing a "reference to a reference."

    Constant Parameters Edit

    The keyword is used to start a section of constant definitions. The section is terminated by the next keyword in a program. Within the section, one or more constants may be defined. These can be a mixture of normal or typed constants: These give a name Name1 to a fixed expression,Expression1. The expression must resolve into one of the following types: These are very odd. They are constant only in the sense that their value persists all parts of a program. Yet it can be changed (as long as the compiler directive is set On). They are used, for example, when a routine needs to hold values that are preserved across calls. It is better to use Object Oriented principles to allow data to be preserved across accesses. When passing data to a routine (function or procedure), you can prefix the parameter definition with if the value is never updated. This marginally improves performance, clarifies routine operation, and prevents accidental updates of the value.

    Dynamic Arrays Edit

    Variants Have No Type Edit

    In general, you can use variants to store any data type and perform numerous operations and type conversions. Notice that this goes against the general approach of the Pascal language and against good programming practices.

    A variant is type-checked and computed at run time. The compiler won't warn you of possible errors in the code, which can be caught only with extensive testing.

    Once you have the variant value, you can copy it to any compatible-or incompatible-data type. If you assign a value to an incompatible data type, Delphi performs a conversion, if it can. Otherwise it issues a run-time error.

    Илон Маск рекомендует:  Многоуровневые списки как в MS Word
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL
    Klin
    Дата 13.2.2003, 17:54 (ссылка) | (нет голосов) Загрузка .