Antes de começar, gostaria de salientar que, de maneira honesta e genuína, pesquisei repetida e exaustivamente no Google por esse tipo de coisa e não consegui encontrar nenhum.
Eu exijo (para um projeto que estou desenvolvendo) uma lista de todos os Delphi (de 2007 até a versão mais recente lançada, não suporte mais nenhuma versão anterior a 2007) "Recursos de linguagem", e as versões nas quais foram introduzidos e ( quando aplicável) obsoleto, aprimorado ou removido.
Eu observei perguntas semelhantes a esta no Stack Overflow antes, embora a maioria delas tenha sido formulada na forma de "qual recurso é o melhor" e encerrada como considerada inadequada.
Se alguém souber de tal lista (ou tiver tempo livre suficiente para compilá-la), eu ficaria muito grato.
A resposta aceita conterá um link para essa lista ou a própria lista.
fonte
Respostas:
Observe que esta resposta lista apenas os novos recursos de linguagem ,
não os novos recursos do VCL / FMX.
Aqui estão os links para o docwiki do RAD Studio:
A lista completa da Embarcadero: Novidades
Veja também: Lista de David I
Para resumir:
Delphi 10.3.x, 10.4 (ainda não lançado, isso é especulativo)
Delphi 10.3
Delphi 10.2 Tokyo
@
operador só é permitida durante a conversão permanente da matriz.Delphi 10.1 Berlin
[weak]
,[unsafe]
e[volatile]
são suportados em todos os compiladores.Delphi 10 Seattle
Delphi XE8
Delphi XE7
Novas rotinas intrínsecas do compilador (não documentado):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
Delphi XE6
Delphi XE5
precisa de dispositivo com ArmV6 + Neon ou ArmV7 para implantação
apresenta definição condicional ANDROID
Delphi XE4
Os seguintes novos condicionais são introduzidos / habilitado XE4:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
weakref
WEAKINSTREF
WEAKINTREF
dependency
diretriz para especificar as dependências de uma biblioteca externa (não documentada até XE8).Observe que grande parte da base para ARC já estava no XE3, mas grande parte dele estava desativada
$IF
declarações só poderia ser terminada com$IFEND
, e$IFDEF
,$IFNDEF
,$IFOPT
directivas só poderia ser terminada com$ENDIF
.Em XE4, isso mudou de forma que $ ENDIF se tornou um terminador aceito para $ IF, $ IFDEF, $ IFNDEF e $ IFOPT.
Delphi XE3
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
Delphi XE2
Packed
Agora força o alinhamento de bytes de registros (antes do XE2, isso não necessariamente)Oito novos DEFINEs foram adicionados:
ALIGN_STACK
CPUX86
CPUX64
MACOS (sistema operacional Mac)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
uses
cláusula.{$ExcessPrecision on/off}
diretiva do compilador (apenas x64)Delphi XE
{$STRINGCHECKS}
diretiva do compilador é ignorada no XE;{$ALIGN}
diretiva: os valores aceitáveis para a{$ALIGN}
diretiva agora incluem 1, 2, 4, 8 e 16.{$CODEALIGN}
diretiva, define o endereço inicial para um procedimento ou função.{$STRONGLINKTYPES ON}
diretivaDelphi 2010
as
operador pode ser usado para lançar uma referência de interface de volta ao objeto do qual foi extraída.is
operador pode ser usado para verificar se uma referência de interface foi extraída de uma determinada classe.TObject(SomeInterface)
.delayed
diretiva indica que uma biblioteca externa, como uma DLL não deve ser carregada no momento da declaração, mas deve esperar até a primeira chamada para o métodoDelphi 2009
string
agora mapeia paraUnicodeString
;{$HighCharUnicode on|off}
diretiva do compiladorfunction Default(T): T
função intrínseca (não documentada){$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
função pode receber um parâmetro que especifica um resultado;resourcestrings
como Widestrings;TObject
tem um ponteiro oculto extra paraTMonitor
além de seu ponteiro VMT;deprecated
palavra - chave agora pode ter texto adicionalDelphi 2007
Observe que o Delphi 2007 é um lançamento ininterrupto, DCU's do D2006 funcionarão sem alterações no D2007 ;
Delphi 2006
static
métodos e propriedades;strict
palavra-chave de visibilidade privada / protegida ;final
palavra-chave para métodos virtuais;{$METHODINFO}
diretiva;Delphi 2005
for ... in
rotações,inline
palavra chave{$REGION}
/{$ENDREGION}
directivasDelphi 7
{$WARN UNSAFE_CODE ON}
TFormatSettings
estrutura.Delphi 6
[TCustomVariantType][68]
fornece sobrecarga de operador para tipos de variantes personalizados{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
diretivas de compiladorexperimental
,deprecated
,library
,platform
(mas sem texto adicional para obsoleto)OLEVariant
{$J+}
)varargs
de funções externas (mas apenas para acdecl
convenção de chamada)Delphi 5
Sem novos recursos de linguagem, mas:
Delphi 4
LongWord
eInt64
;Cardinal
é um UINT32 (antes de ser um valor de 31 bits sem sinal)Real
leva 8 bytes e é o mesmo quedouble
(anteriormente era 6 bytes);{$REALCOMPATIBILITY ON}
diretiva do compilador;REAL48
substitui o antigo 6-bytereal
;resourcestrings
{$EXTERNALSYM}
e{$NODEFINE}
diretivasimplements
palavra chave para propriedadesDelphi 3
true
como-1
vez de 1 (Boolean permanece inalterado)packages
.out
parâmetros.Widestring
interface
edispinterface
palavra - chave edispid
suporte COM ( ).Delphi 2
Ansistring
substituishortstring
como o tipo de string padrãoCurrency
Variant
(para interoperabilidade com automação OLE).ThreadVar
palavra chave.packed
palavra-chave substitui esse comportamento;1899/12/30
D1, começou em0000/00/00
finalization
palavra-chaveregister
estdcall
convenções de chamada adicionadas.packed
palavra-chave.fonte
$LIBPREFIX
e outras diretivas existem pelo menos desde D7 (eu suspeito que D6, já que são relacionadas a Kylix)Apenas para complementar a resposta de Johan verifique esta entrada no meu blog
List of changes between versions of Delphi (Since Delphi 5)
e a excelente páginaThe TIndex
que lista a maioria das novidades desde o delphi 2005 e recursos sobre cada uma delas.fonte
O jedi.inc arquivo usado pelo projeto Dephi JEDI expõe uma série de definições de recursos. Se o seu projeto for compatível com MPL, você pode até usá-lo para detecção de recursos e evitar o trabalho de reinventar aquela roda em particular.
Por exemplo, define
SUPPORTS_FOR_IN
se o compilador oferece suporte a enumeradores. Pode-se envolver o código do enumerador em umaIFDEF
verificação dessa definição, em vez de verificar uma versão específica do compilador.fonte
jedi.inc
pelo menos preciso, enquanto a lista de Johan precisa de algumas verificações.