Список возможностей языка Delphi и версии, в которой они были представлены / объявлены устаревшими - PullRequest
108 голосов
/ 11 декабря 2011

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

Требуется (для проекта, который яЯ разрабатываю) список всех Delphi (с 2007 года до самой последней выпущенной версии, я больше не поддерживаю любую версию, более раннюю, чем 2007), «Языковые функции», а также версии, в которых они были представлены и (где применимо) устарели, улучшены илиудален.

Я уже отмечал подобные вопросы на этот вопрос в Переполнении стека, хотя большинство из них были сформулированы в виде "какая функция лучше" и закрыты как неприемлемые.

Есликто-нибудь знает о таком списке (или имеет достаточно свободного времени для его составления), я был бы очень признателен.

Принятый ответ будет содержать либо ссылку на такой список, либо сам список.

Ответы [ 3 ]

150 голосов
/ 11 декабря 2011

Обратите внимание, что в этом ответе перечислены только новые язык функции
не новые функции VCL / FMX.

Вот ссылки на документацию RAD Studio:

Полный список от Embarcadero: Что нового
См. Также: Список Давида I


Подведем итог:

Delphi 10.3.x, 10.4 (пока нет, это умозрительно)

Delphi 10.3

  • 64-битный компилятор Linux больше не использует ARC , вместо этого он использует управляемую по умолчанию управляемую вручную, которая аналогична компилятору Windows.Это значительно упрощает перенос кода из Windows или OSX в linux.
  • Встроенные переменные с автоматическим выводом типа
  • 8-битная поддержка AnsiChar / AnsiString в Linux.
  • C ++ Builder и Delphi теперь используют один и тот же ABI для всех вызовов.

Delphi 10.2 Токио

Delphi 10.1 Berlin

Delphi 10 Сиэтл

  • Поддержка Android 5.1.1 и iOS 8.4
  • Улучшенный OSXобработка исключений

Delphi XE8

  • Поддержка 64-битной iOS;
  • Новые целочисленные типы: FixedInt , FixedUInt 32-разрядные целочисленные типы на всех платформах;
  • Новыйплатформо-зависимые целочисленные типы: LongInt , LongWord (64-разрядная на iOS-64, 32-разрядная на всех других платформах);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

На XE4 все изменилось, и $ ENDIF стал приемлемым терминатором для $ IF, $ IFDEF, $ IFNDEF и $ IFOPT.

Delphi XE3

Delphi XE2

Delphi XE

  • Директива компилятора {$STRINGCHECKS} игнорируется в XE;
  • Новое 16-байтовое значение для директивы {$ALIGN}: Допустимые значения для директивы {$ALIGN} теперь включают 1, 2, 4, 8 и 16.
  • new {$CODEALIGN} директива, устанавливает начальный адрес для процедуры или функции.
  • Директива {$STRONGLINKTYPES ON}
  • Поддержка регулярных выражений.

Delphi 2010

  • Улучшенный Delphi RTTI (информация о типе времени выполнения).
  • Атрибуты
  • Оператор as может использоваться для приведения ссылки на интерфейс обратно к объекту, из которого он был извлечен.
  • Оператор is можно использовать для проверки того, была ли ссылка на интерфейс извлечена из определенного класса.
  • Обычное небезопасное приведение может быть выполнено на интерфейсе: TObject(SomeInterface).
  • new delayed указывает, что внешняя библиотека, такая как DLL, не должна загружаться во время объявления, но должна ждать до первого вызова метода
  • Конструктор класса / Деструктор

Delphi 2009

Delphi 2007

  • Нет языкаизменения, о которых я знаю;
    Обратите внимание, что Delphi 2007 - это стабильный выпуск, DCU от D2006 будут работать без изменений в D2007 ;
  • («Персона» .NET 2007 года представила дженерики )

Delphi 2006

Delphi 2005

  • for ... in петли,
  • inline ключевое слово
  • Подстановочный знак в операторе использования разрешен
  • вложенные типы
  • вложенные константы
  • {$REGION} / {$ENDREGION} директивы

Delphi 7

  • три дополнительных предупреждения компилятора:
    • Unsafe_Type,
    • Unsafe_Code и
    • Unsafe_Cast. Эти предупреждения по умолчанию отключены, но могут быть включены
  • Новая директива компилятора {$WARN UNSAFE_CODE ON}
  • Перегрузки подпрограммэтот формат и синтаксический анализ чисел, значений даты и времени и валюты с использованием структуры TFormatSettings.

Delphi 6

Delphi 5

Нет новых языковых функций, но:

Delphi 4

Delphi 3

  • Wordbool, longbool и bytebool хранят true как -1 вместо 1 (логическое значение не изменяется)
  • Компоненты должны быть установлены с использованием packages.
  • Утверждения.
  • out Параметры.
  • Widestring
  • interface и dispinterface ключевое слово и поддержка COM (dispid).

Delphi 2

  • Поддержка 32-разрядных;
  • Ansistring заменяет shortstring как тип строки по умолчанию
  • Currency
  • Variant (для взаимодействия с OLE-автоматизацией).
  • Поддержка потоков и ключевое слово ThreadVar.
  • 4-байтовые данные выровнены на 4 байта. Новое ключевое слово packed переопределяет это поведение;
  • TDateTime начинается в 1899/12/30 под D1 и начинается в 0000/00/00
  • new finalization ключевое слово
  • register и stdcallдобавлены соглашения о вызовах.
  • packed ключевое слово.
16 голосов
/ 11 декабря 2011

Просто для дополнения ответа Йохан проверьте эту запись в моем блоге List of changes between versions of Delphi (Since Delphi 5) и отличную страницу The TIndex, в которой перечислены большинство новых функции начиная с Delphi 2005 и ресурсы о каждом из них.

7 голосов
/ 12 декабря 2011

Файл jedi.inc , используемый проектом Dephi JEDI, предоставляет ряд определений функций.Если ваш проект совместим с MPL, вы можете даже использовать его для обнаружения функций и избавить себя от необходимости заново изобретать это конкретное колесо.

Например, он определяет SUPPORTS_FOR_IN, если компилятор поддерживает перечислители.Можно было бы обернуть ваш код перечислителя в IFDEF, проверяя это определение, а не проверяя конкретную версию компилятора.

...