Lista de características del lenguaje Delphi y la versión en la que se introdujeron / desaprobaron

114

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.

LaKraven
fuente
P: Entonces, ¿por qué exactamente necesita esa lista? P: ¿Está intentando crear un conjunto de códigos (tal vez un componente o una biblioteca) que admita todas las plataformas entre BDS2007 y XE2 (es decir, no utiliza funciones más nuevas que BDS2007)? P: Si es así, ¿por qué no intentar compilar en 2007 y ver qué se rompe? (PD: todavía estoy felizmente usando BDS2006;)).
paulsm4
8
Simon verifique esta pregunta Lista variada de novedades en Delphi Language, RTL, VCL. También en mi blog mantengo una lista
RRUZ
3
@ paulsm4 1) Para que pueda tener en cuenta las limitaciones de las funciones en las versiones de las bibliotecas públicas, 2) Sí (pero no necesariamente una Biblioteca de componentes), 3) Porque es más fácil saber de antemano que probar constantemente en diferentes versiones cada aspecto individual de una biblioteca . Teóricamente, D2006 funcionaría bien, pero no voy a apoyarlo activamente (sin ofender).
LaKraven

Respuestas:

159

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

  • El compilador de Linux de 64 bits ya no usa ARC , sino que usa el manual administrado por defecto, que es el mismo que en el compilador de Windows. Esto facilita mucho la migración de código de Windows u OSX a Linux.
  • Variables en línea con inferencia de tipo automática
  • Compatibilidad con AnsiChar / AnsiString de 8 bits en habilitar en Linux.
  • C ++ Builder y Delphi ahora usan la misma ABI para todas las llamadas.

Delphi 10.2 Tokio

Delphi 10.1 Berlín

Delphi 10 Seattle

  • Soporte para Android 5.1.1 y iOS 8.4
  • Manejo mejorado de excepciones de OSX

Delphi XE8

  • Soporte para iOS de 64 bits;
  • Nuevos tipos de enteros: FixedInt , FixedUInt tipos de enteros de 32 bits en todas las plataformas;
  • Nuevos tipos de enteros dependientes de la plataforma: LongInt , LongWord (64 bits en iOS-64, 32 bits en todas las demás plataformas);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

En XE4, esto cambió de modo que $ ENDIF se convirtió en un terminador aceptado para $ IF, $ IFDEF, $ IFNDEF y $ IFOPT.

Delphi XE3

Delphi XE2

Delphi XE

  • La {$STRINGCHECKS}directiva del compilador se ignora en XE;
  • Nuevo valor de 16 bytes para la {$ALIGN}directiva: los valores aceptables para la {$ALIGN}directiva ahora incluyen 1, 2, 4, 8 y 16.
  • nueva {$CODEALIGN}directiva, esto establece la dirección de inicio para un procedimiento o función.
  • La {$STRONGLINKTYPES ON}directiva
  • Soporte para expresiones regulares.

Delphi 2010

  • Delphi RTTI mejorado (información de tipo de tiempo de ejecución).
  • Atributos
  • El asoperador se puede utilizar para devolver una referencia de interfaz al objeto del que se extrajo.
  • El isoperador se puede utilizar para verificar si se extrajo una referencia de interfaz de una determinada clase.
  • De fundición insegura normal puede llevarse a cabo en una interfaz: TObject(SomeInterface).
  • La nueva delayeddirectiva 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.
  • Constructor / Destructor de clases

Delphi 2009

Delphi 2007

  • No hay cambios de idioma que yo sepa;
    Tenga en cuenta que Delphi 2007 es una versión ininterrumpida, las DCU de D2006 funcionarán sin cambios en D2007 ;
  • (La 'personalidad' de .NET de 2007 introdujo genéricos )

Delphi 2006

Delphi 2005

  • for ... in bucles
  • inline palabra clave
  • Se permiten comodines en la declaración de usos
  • tipos anidados
  • constantes anidadas
  • {$REGION}/ {$ENDREGION}directivas

Delphi 7

  • tres advertencias adicionales del compilador:
    • Unsafe_Type,
    • Unsafe_Code y
    • Unsafe_Cast. Estas advertencias están deshabilitadas de forma predeterminada, pero se pueden habilitar
  • nueva directiva del compilador {$WARN UNSAFE_CODE ON}
  • Sobrecargas de rutinas que formatean y analizan números, valores de fecha y hora y moneda utilizando una TFormatSettingsestructura.

Delphi 6

Delphi 5

No hay nuevas funciones de idioma, pero:

Delphi 4

Delphi 3

  • Wordbool, longbool y bytebool se almacenan truecomo en -1lugar de 1 (el booleano no se modifica)
  • Los componentes deben instalarse utilizando packages.
  • Afirmaciones.
  • out parámetros.
  • Widestring
  • interfacey compatibilidad con dispinterfacepalabras clave y COM ( dispid).

Delphi 2

  • Soporte para 32 bits;
  • Ansistringreemplaza shortstringcomo el tipo de cadena predeterminado
  • Currency
  • Variant (para interoperabilidad con automatización OLE).
  • Soporte de subprocesos y ThreadVarpalabra clave.
  • Los datos de 4 bytes están alineados con 4 bytes. La nueva packedpalabra clave anula este comportamiento;
  • TDateTime comienza en 1899/12/30 D1 comenzó en0000/00/00
  • nueva finalizationpalabra clave
  • registery stdcallconvenciones de llamadas agregadas.
  • packed palabra clave.
Johan
fuente
¡Ah, maravilloso! No pude encontrar una manera de hacer que Docwiki me mostrara páginas específicas de versiones anteriores de Delphi (pre XE2) ... ¡ni idea de por qué! ¡Esto es maravilloso y ha sido marcado como la respuesta correcta! ¡Gracias!
LaKraven
@DavidHeffernan Es útil tener las características nuevo en 2007 ya que establece la línea de base ... en cierto sentido, lo sabrá con certeza si una parte de lo que estoy productores podría tal vez el trabajo en versiones anteriores (aunque yo mismo tengo sin intención de apoyarlo)
LaKraven
9
En mi blog mantengo una lista
RRUZ
3
Holy Crap DEMORADO, ¡eso es IMPRESIONANTE! ¿Por qué no te dan esta lista cuando actualizas?
Peter Turner
1
Esto no es exacto. $LIBPREFIXet al. directivas están ahí al menos desde D7 (sospecho que D6, ya que están relacionadas con Kylix)
Free Consulting
16

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ágina The TIndexque enumera la mayoría de las nuevas características desde delphi 2005 y los recursos sobre cada una.

RRUZ
fuente
Hace algún tiempo, otro sitio de Delphi , delphi3000, fue marcado como peligroso para algunos antivirus.
RRUZ
2
Soy el propietario de The TIndex y puedo confirmar que es un falso positivo.
LachlanG
7

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_INsi el compilador admite enumeradores. Uno podría envolver su código de enumerador en una IFDEFverificación de esa definición en lugar de verificar una versión particular del compilador.

más afrazier
fuente
Sí, esta inclusión es ciertamente útil, pero carece de la integridad de una lista detallada (de ahí esta pregunta). Gracias por la sugerencia ... considere que la respuesta aceptada a esta pregunta es una mejora de la información proporcionada por jedi.inc :)
LaKraven
1
@LaKraven: Es cierto que hay muchas cosas que no recibe, pero para algunos puede ser suficiente. También tiene la ventaja de estar ya hecho. :-) Personalmente, creo que aplanar las jerarquías de VCL, eliminar los encabezados de derechos de autor y colocarlos todos en un repositorio de control de versiones también podría ser útil. De esa manera, puede ver cuándo se implementaron determinadas funciones RTL / VCL.
afrazier
@LaKraven, creo que jedi.incal menos es exacto, mientras que la lista de Johan necesita algunas verificaciones.
Consulta gratuita