Antes de comenzar, me gustaría señalar que honesta y genuinamente he buscado en forma repetida y exhaustiva a través de Google tal cosa, y no he podido encontrar una.
Necesito (para un proyecto que estoy desarrollando) una lista de todas las "Características del lenguaje" de Delphi (2007 hasta la última versión publicada, ya no soy compatible con ninguna versión anterior a 2007), y las versiones en las que se introdujeron y ( cuando corresponda) obsoleto, mejorado o eliminado.
He notado preguntas similares a esta en Stack Overflow antes, aunque la mayoría de ellas se expresaron en forma de "qué característica es la mejor" y se cerraron por considerarlas inadecuadas.
Si alguien conoce esa lista (o tiene suficiente tiempo libre para compilar una), estaría muy agradecido.
La respuesta aceptada contendrá un enlace a dicha lista o la lista misma.
fuente
Respuestas:
Tenga en cuenta que esta respuesta solo enumera las nuevas funciones del idioma ,
no las nuevas funciones VCL / FMX.
Aquí están los enlaces al docwiki de RAD Studio:
La lista completa de Embarcadero: Novedades
Vea también: Lista de David I
Para resumir:
Delphi 10.3.x, 10.4 (aún no ha salido, esto es especulativo)
Delphi 10.3
Delphi 10.2 Tokio
@
operador solo se permite cuando se realiza la conversión de la matriz.Delphi 10.1 Berlín
[weak]
,[unsafe]
y[volatile]
son compatibles con todos los compiladores.Delphi 10 Seattle
Delphi XE8
Delphi XE7
Nuevas rutinas intrínsecas del compilador (sin documentar):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
Delphi XE6
Delphi XE5
necesita un dispositivo con ArmV6 + Neon o ArmV7 para la implementación
introduce la definición condicional de ANDROID
Delphi XE4
Las siguientes nuevas condicionales se introducen / habilitadas en XE4:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
weakref
WEAKINSTREF
WEAKINTREF
dependency
directiva para especificar las dependencias de una biblioteca externa (sin documentar hasta XE8).Tenga en cuenta que gran parte del trabajo preliminar para ARC ya estaba en XE3, pero gran parte estaba deshabilitado
$IF
declaraciones sólo se podrían terminar con$IFEND
, y el$IFDEF
,$IFNDEF
,$IFOPT
directivas sólo podían ser terminados con$ENDIF
.En XE4, esto cambió de modo que $ ENDIF se convirtió en un terminador aceptado para $ IF, $ IFDEF, $ IFNDEF y $ IFOPT.
Delphi XE3
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
Delphi XE2
Packed
Ahora fuerza la alineación de bytes de registros (antes de XE2 no necesariamente hacía esto)Se han agregado ocho DEFINEs nuevos:
ALIGN_STACK
CPUX86
CPUX64
MACOS (sistema operativo Mac)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
uses
cláusula.{$ExcessPrecision on/off}
directiva del compilador (solo x64)Delphi XE
{$STRINGCHECKS}
directiva del compilador se ignora en XE;{$ALIGN}
directiva: los valores aceptables para la{$ALIGN}
directiva ahora incluyen 1, 2, 4, 8 y 16.{$CODEALIGN}
directiva, esto establece la dirección de inicio para un procedimiento o función.{$STRONGLINKTYPES ON}
directivaDelphi 2010
as
operador se puede utilizar para devolver una referencia de interfaz al objeto del que se extrajo.is
operador se puede utilizar para verificar si se extrajo una referencia de interfaz de una determinada clase.TObject(SomeInterface)
.delayed
directiva indica que una biblioteca externa, como una DLL, no debe cargarse en el momento de la declaración, sino que debe esperar hasta la primera llamada al método.Delphi 2009
string
ahora se asigna aUnicodeString
;{$HighCharUnicode on|off}
directiva del compiladorfunction Default(T): T
función intrínseca (indocumentada){$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
función puede tomar un parámetro que especifique un resultado;resourcestrings
como Widestrings;TObject
tiene un puntero oculto adicionalTMonitor
además de su puntero VMT;deprecated
palabra clave ahora puede tener texto adicionalDelphi 2007
Tenga en cuenta que Delphi 2007 es una versión ininterrumpida, las DCU de D2006 funcionarán sin cambios en D2007 ;
Delphi 2006
static
métodos y propiedades;strict
palabra clave de visibilidad privada / protegida ;final
palabra clave para métodos virtuales;{$METHODINFO}
directiva;Delphi 2005
for ... in
buclesinline
palabra clave{$REGION}
/{$ENDREGION}
directivasDelphi 7
{$WARN UNSAFE_CODE ON}
TFormatSettings
estructura.Delphi 6
[TCustomVariantType][68]
proporciona una sobrecarga del operador para tipos de variantes personalizadas{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
directivas de compiladorexperimental
,deprecated
,library
,platform
(pero sin texto adicional para desuso)OLEVariant
{$J+}
)varargs
funciones externas (pero solo para lacdecl
convención de llamada)Delphi 5
No hay nuevas funciones de idioma, pero:
Delphi 4
LongWord
yInt64
;Cardinal
es un UINT32 (antes era un valor de 31 bits sin firmar)Real
toma 8 bytes y es lo mismo quedouble
(anteriormente era de 6 bytes);{$REALCOMPATIBILITY ON}
directiva del compilador;REAL48
reemplaza el antiguo de 6 bytesreal
;resourcestrings
{$EXTERNALSYM}
y{$NODEFINE}
directivasimplements
palabra clave para propiedadesDelphi 3
true
como en-1
lugar de 1 (el booleano no se modifica)packages
.out
parámetros.Widestring
interface
y compatibilidad condispinterface
palabras clave y COM (dispid
).Delphi 2
Ansistring
reemplazashortstring
como el tipo de cadena predeterminadoCurrency
Variant
(para interoperabilidad con automatización OLE).ThreadVar
palabra clave.packed
palabra clave anula este comportamiento;1899/12/30
D1 comenzó en0000/00/00
finalization
palabra claveregister
ystdcall
convenciones de llamadas agregadas.packed
palabra clave.fuente
$LIBPREFIX
et al. directivas están ahí al menos desde D7 (sospecho que D6, ya que están relacionadas con Kylix)Solo para complementar la respuesta de Johan, consulte esta entrada en mi blog
List of changes between versions of Delphi (Since Delphi 5)
y la excelente páginaThe TIndex
que enumera la mayoría de las nuevas características desde delphi 2005 y los recursos sobre cada una.fuente
El archivo jedi.inc utilizado por el proyecto Dephi JEDI expone una serie de características definidas. Si su proyecto es compatible con MPL, incluso podría usarlo para la detección de características y ahorrarse la molestia de reinventar esa rueda en particular.
Por ejemplo, define
SUPPORTS_FOR_IN
si el compilador admite enumeradores. Uno podría envolver su código de enumerador en unaIFDEF
verificación de esa definición en lugar de verificar una versión particular del compilador.fuente
jedi.inc
al menos es exacto, mientras que la lista de Johan necesita algunas verificaciones.