Список особенностей языка Delphi и версии, в которой они были представлены / объявлены устаревшими

97

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

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

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

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

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

  • 0
    В: Так зачем вам такой список? Q: Вы пытаетесь создать один набор кода (возможно , компонент или библиотеку) , которая поддерживает все платформы между BDS2007 и XE2 (т.е. использует не особенности новее , чем BDS2007)? В: Если так, то почему бы просто не попробовать компилировать в 2007 и посмотреть, что ломается? (PS: я все еще счастливо использую BDS2006;)).
  • 8
    Саймон, проверь этот вопрос. Ассорти из списка того, что нового в Delphi Language, RTL, VCL? Также в моем блоге я обновляю список изменений между версиями Delphi
Показать ещё 1 комментарий
Теги:
delphi-2007

3 ответа

144
Лучший ответ

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

Вот ссылки на Docwiki RAD Studio:

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


Обобщить:

Delphi 10.3 (кодовое название Carnival) (подлежит подтверждению)

  • Поддержка 64-битной OSX
  • Неверные типы

Delphi 10.2 Токио

Delphi 10.1 Берлин

Дельфы 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 хранят false как -1 вместо 1 (Boolean не изменяется)
  • Компоненты должны быть установлены с использованием packages.
  • Утверждениях.
  • out параметров.
  • Widestring
  • interface и словом dispinterface а также поддержкой COM (dispid).

Delphi 2

  • Поддержка 32-битной;
  • Ansistring заменяет shortstring в качестве строкового типа по умолчанию
  • Currency
  • Variant (для взаимодействия с автоматизацией OLE).
  • Поддержка Threading и ключевое слово ThreadVar.
  • 4 байтовых данных - это 4 байт, выровненное новое packed ключевое слово переопределяет это поведение;
  • TDateTime начинается в 1899/12/30 под D1, начатое в 0000/00/00
  • новое ключевое слово для finalization
  • register и stdcall вызове stdcall.
  • packed ключевое слово.
  • 0
    Ах, замечательно! Я не мог найти способ заставить Docwiki показывать мне страницы, относящиеся к более старым версиям Delphi (до XE2) ... не знаю почему! Это замечательно, и было отмечено как правильный ответ! Спасибо!
  • 0
    @DavidHeffernan Это полезно иметь возможности новых в 2007 году , так как это устанавливает базовый уровень ... в некотором смысле, я буду знать с уверенностью, что часть того , что я мог бы производить , возможно , работать в более ранних версиях (даже если я сам не собираюсь его поддерживать)
Показать ещё 22 комментария
14

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

  • 0
    Некоторое время назад другой сайт delphi delphi3000 был отмечен как опасный для некоторых антивирус.
  • 2
    Я владелец TIndex и могу подтвердить, что это ложный положительный результат.
6

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

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

  • 0
    Да, это включение, безусловно, полезно, но ему не хватает полноты подробного списка (отсюда и этот вопрос). Спасибо за предложение ... считаю, что принятый ответ на этот вопрос является улучшением информации, предоставленной jedi.inc :)
  • 1
    @LaKraven: правда, есть много вещей, которые он не получает, но для некоторых этого может быть достаточно. Это также имеет то преимущество, что уже сделано. :-) Лично я думаю, что выравнивание иерархий VCL, удаление заголовков авторских прав и добавление их всех в репозиторий управления версиями также может быть полезным. Таким образом, вы можете увидеть, когда были реализованы определенные функции RTL / VCL.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню