Список функций и версии языка Delphi, в которых они были введены/устарели

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

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

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

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

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

Ответ 1

Обратите внимание, что в этом ответе перечислены только новые языковые функции
не новые функции 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 Берлин

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

Delphi 2010

  • Улучшенный Delphi RTTI (информация о типе времени выполнения).
  • Атрибуты
  • Оператор as можно использовать для приведения ссылки интерфейса к объекту, из которого он был извлечен.
  • Оператор is можно использовать для проверки того, была ли ссылка на интерфейс извлечена из определенного класса.
  • Обычное небезопасное приведение может быть выполнено на интерфейсе: TObject(SomeInterface).
  • новая 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 ключевое слово ThreadVar.
  • 4-байтовые данные - это 4-байтовое выровненное новое packed ключевое слово, перекрывающее это поведение;
  • TDateTime начинается в 1899/12/30 под D1, он начинается в 0000/00/00
  • новое ключевое слово finalization
  • добавлены соглашения о register и register вызовов stdcall.
  • packed ключевое слово

Ответ 2

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

Ответ 3

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

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