Прежде чем я начну, я хотел бы указать, что я честно и искренне неоднократно и исчерпывающе искал через Google такую вещь, но не смог ее найти.
Мне требуется (для проекта, который я разрабатываю) список всех Delphi (от 2007 до самой последней выпущенной версии, я больше не поддерживаю никакие версии старше 2007 года) «Языковые функции», а также версии, в которых они были представлены и ( где применимо) устарел, улучшен или удален.
Я уже отмечал подобные вопросы в Stack Overflow и раньше, хотя большинство из них были сформулированы в форме «какая функция лучше всего» и закрыты как неподходящие.
Если кто-нибудь знает о таком списке (или имеет достаточно свободного времени для его составления), я был бы очень благодарен.
В принятом ответе будет либо ссылка на такой список, либо сам список.
источник
Ответы:
Обратите внимание, что в этом ответе перечислены только новые языковые функции, а
не новые функции VCL / FMX.
Вот ссылки на docwiki RAD Studio:
Полный список из Embarcadero: Что нового
См. Также: Список Давида I.
Подвести итоги:
Delphi 10.3.x, 10.4 (еще не вышло, это предположение)
Delphi 10.3
Delphi 10.2 Токио
@
оператора разрешено только при жестком преобразовании массива.Delphi 10.1 Берлин
[weak]
,[unsafe]
и[volatile]
атрибуты поддерживаются на всех компиляторов.Delphi 10 Сиэтл
Delphi XE8
Delphi XE7
Новые встроенные процедуры компилятора (недокументированные):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
Delphi XE6
Delphi XE5
требуется устройство с ArmV6 + Neon или ArmV7 для развертывания,
вводит условное определение ANDROID
Delphi XE4
В XE4
добавлены / включены следующие новые условные выражения : AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF
dependency
директива для указания зависимостей внешней библиотеки (недокументирована до XE8).Обратите внимание, что большая часть основ ARC уже была в XE3, но большая часть из них была отключена.
$IF
заявления могут быть прекращены только$IFEND
, и$IFDEF
,$IFNDEF
,$IFOPT
директивы могут быть прекращены только$ENDIF
.В XE4 это изменилось, так что $ ENDIF стал допустимым ограничителем для $ IF, $ IFDEF, $ IFNDEF и $ IFOPT.
Delphi XE3
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
Delphi XE2
Packed
Теперь принудительное побайтовое выравнивание записей (до XE2 это не обязательно)Добавлено восемь новых DEFINE:
ALIGN_STACK
CPUX86
CPUX64
MACOS (операционная система Mac)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
uses
предложении требуются полные имена области видимости модуля .{$ExcessPrecision on/off}
директива компилятора (только x64)Delphi XE
{$STRINGCHECKS}
Директива компилятора игнорируется в ХЕ;{$ALIGN}
директивы: допустимые значения для{$ALIGN}
директивы теперь включают 1, 2, 4, 8 и 16.{$CODEALIGN}
Директива new устанавливает начальный адрес процедуры или функции.{$STRONGLINKTYPES ON}
директиваDelphi 2010
as
Оператор может быть использован , чтобы бросить интерфейсную обратную ссылку на объект , из которого он был извлечен.is
Оператор может быть использован для проверки , была ли ссылка на интерфейс , извлеченные из определенного класса.TObject(SomeInterface)
.delayed
Директива new указывает, что внешняя библиотека, такая как DLL, не должна загружаться во время объявления, а должна дождаться первого вызова методаDelphi 2009
string
теперь соответствуетUnicodeString
;{$HighCharUnicode on|off}
директива компилятораfunction Default(T): T
внутренняя функция (недокументированная){$PointerMath on|off}
;W1057 Implicit string cast from '%s' to '%s'
,W1058 Implicit string cast with potential data loss from '%s' to '%s'
,W1059 Explicit string cast from '%s' to '%s'
,W1060 Explicit string cast with potential data loss from '%s' to '%s'
;Exit
Функция может принимать параметр , указывающий на результат;resourcestrings
как Widestrings;TObject
имеет дополнительный скрытый указатель наTMonitor
помимо своего указателя VMT;deprecated
Теперь ключевое слово может иметь дополнительный текстDelphi 2007
Обратите внимание, что Delphi 2007 - это безотказный выпуск, DCU из D2006 будут работать без изменений в D2007 ;
Delphi 2006
static
методы и свойства;strict
ключевое слово private / protected visibility ;final
ключевое слово для виртуальных методов;{$METHODINFO}
директива;Delphi 2005
for ... in
петли,inline
ключевое слово{$REGION}
/{$ENDREGION}
директивыDelphi 7
{$WARN UNSAFE_CODE ON}
TFormatSettings
структуры.Delphi 6
[TCustomVariantType][68]
обеспечивает перегрузку оператора для пользовательских типов вариантов{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
директив компилятораexperimental
,deprecated
,library
,platform
(но без дополнительного текста для устаревших)OLEVariant
{$J+}
)varargs
внешних функций (но только дляcdecl
соглашения о вызовах)Delphi 5
Нет новых языковых функций, но:
Delphi 4
LongWord
иInt64
;Cardinal
является UINT32 (до этого было 31-битное значение без знака)Real
занимает 8 байт и совпадает сdouble
(ранее было 6 байт);{$REALCOMPATIBILITY ON}
директивой компилятора;REAL48
заменяет старый 6-байтовыйreal
;resourcestrings
{$EXTERNALSYM}
и{$NODEFINE}
директивыimplements
ключевое слово для свойствDelphi 3
true
как-1
вместо 1 (Boolean не изменяется)packages
.out
параметры.Widestring
interface
и поддержкаdispinterface
ключевых слов и COM (dispid
).Delphi 2
Ansistring
заменяетshortstring
тип строки по умолчаниюCurrency
Variant
(для взаимодействия с автоматизацией OLE).ThreadVar
ключевое слово.packed
ключевое слово отменяет это поведение;1899/12/30
D1, он начался в0000/00/00
finalization
ключевое словоregister
иstdcall
добавлены соглашения о вызовах.packed
ключевое слово.источник
$LIBPREFIX
и другие директивы существуют, по крайней мере, с D7 (я подозреваю, что D6, поскольку они связаны с Kylix)Просто чтобы дополнить ответ Йохана, проверьте эту запись в моем блоге
List of changes between versions of Delphi (Since Delphi 5)
и отличную страницу, наThe TIndex
которой перечислены большинство новых функций, появившихся после delphi 2005, и ресурсы по каждой из них.источник
Jedi.inc файл , используемый в проекте Dephi JEDI предоставляет ряд полнометражных Определяет. Если ваш проект совместим с MPL, вы даже можете использовать его для обнаружения функций и избавить себя от необходимости заново изобретать это конкретное колесо.
Например, он определяет
SUPPORTS_FOR_IN
, поддерживает ли компилятор счетчики. Можно обернуть ваш код перечислителяIFDEF
проверкой этого определения, а не проверять конкретную версию компилятора.источник
jedi.inc
по крайней мере точным, а список Йохана требует некоторых проверок.