Avant de commencer, je voudrais souligner que j'ai honnêtement et sincèrement cherché à plusieurs reprises et de manière exhaustive via Google une telle chose, et je n'ai pas pu en trouver.
J'ai besoin (pour un projet que je développe) d'une liste de tous les Delphi (2007 à la toute dernière version publiée, je ne supporte plus aucune version antérieure à 2007) "Fonctionnalités linguistiques", et les versions dans lesquelles elles ont été introduites et ( le cas échéant) obsolète, améliorée ou supprimée.
J'ai déjà noté des questions similaires à celles-ci sur Stack Overflow, bien que la plupart d'entre elles aient été formulées sous la forme "quelle fonctionnalité est la meilleure", et ont été fermées comme jugées inappropriées.
Si quelqu'un connaît une telle liste (ou a assez de temps libre pour en compiler une), je serais très reconnaissant.
La réponse acceptée contiendra soit un lien vers une telle liste, soit la liste elle-même.
la source
Réponses:
Notez que cette réponse ne répertorie que les nouvelles fonctionnalités linguistiques et
non les nouvelles fonctionnalités VCL / FMX.
Voici les liens vers le docwiki de RAD Studio:
La liste complète d'Embarcadero: Quoi de neuf
Voir aussi: La liste de David I
Résumer:
Delphi 10.3.x, 10.4 (pas encore sorti, c'est spéculatif)
Delphi 10.3
Delphi 10.2 Tokyo
@
tableau dynamique à un pointeur à l'aide de l' opérateur n'est autorisée que lors de la conversion en dur du tableau.Delphi 10.1 Berlin
[weak]
,[unsafe]
et[volatile]
sont pris en charge sur tous les compilateurs.Delphi 10 Seattle
Delphi XE8
Delphi XE7
Nouvelles routines intrinsèques du compilateur (non documentées):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
Delphi XE6
Delphi XE5
nécessite un appareil avec ArmV6 + Neon ou ArmV7 pour le déploiement
introduit la définition conditionnelle ANDROID
Delphi XE4
Les nouvelles conditions suivantes sont introduites / activées dans XE4:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF
dependency
directive pour spécifier les dépendances d'une bibliothèque externe (non documentée jusqu'à XE8).Notez qu'une grande partie du travail de base pour ARC était déjà dans XE3, mais une grande partie était désactivée
$IF
déclarations ne pouvaient être résiliés avec$IFEND
, et$IFDEF
,$IFNDEF
, les$IFOPT
directives ne pouvaient se terminer par$ENDIF
.À XE4, cela a changé de sorte que $ ENDIF est devenu un terminateur accepté pour $ IF, $ IFDEF, $ IFNDEF et $ IFOPT.
Delphi XE3
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
Delphi XE2
Packed
Maintenant, force l'alignement des octets des enregistrements (avant XE2, cela ne le faisait pas nécessairement)Huit nouvelles DEFINE ont été ajoutées:
ALIGN_STACK
CPUX86
CPUX64
MACOS (système d'exploitation Mac)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
uses
clause.{$ExcessPrecision on/off}
directive du compilateur (x64 uniquement)Delphi XE
{$STRINGCHECKS}
directive du compilateur est ignorée dans XE;{$ALIGN}
directive: les valeurs acceptables pour la{$ALIGN}
directive incluent désormais 1, 2, 4, 8 et 16.{$CODEALIGN}
directive, cela définit l'adresse de départ d'une procédure ou d'une fonction.{$STRONGLINKTYPES ON}
directiveDelphi 2010
as
opérateur peut être utilisé pour convertir une référence d'interface en l'objet dont elle a été extraite.is
opérateur peut être utilisé pour vérifier si une référence d'interface a été extraite d'une certaine classe.TObject(SomeInterface)
.delayed
directive indique qu'une bibliothèque externe telle qu'une DLL ne doit pas être chargée au moment de la déclaration mais doit attendre le premier appel à la méthodeDelphi 2009
string
correspond désormais àUnicodeString
;{$HighCharUnicode on|off}
directive du compilateurfunction Default(T): T
fonction intrinsèque (non documentée){$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
fonction peut prendre un paramètre spécifiant un résultat;resourcestrings
comme Widestrings;TObject
a un pointeur caché supplémentaireTMonitor
en plus de son pointeur VMT;deprecated
mot - clé peut maintenant avoir du texte supplémentaireDelphi 2007
Notez que Delphi 2007 est une version sans rupture, les DCU de D2006 fonctionneront sans changement dans D2007 ;
Delphi 2006
static
méthodes et propriétés;strict
mot-clé de visibilité privé / protégé ;final
mot-clé pour les méthodes virtuelles;{$METHODINFO}
directif;Delphi 2005
for ... in
boucles,inline
mot-clé{$REGION}
/{$ENDREGION}
directivesDelphi 7
{$WARN UNSAFE_CODE ON}
TFormatSettings
structure.Delphi 6
[TCustomVariantType][68]
fournit une surcharge d'opérateur pour les types de variantes personnalisés{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
directives du compilateurexperimental
,deprecated
,library
,platform
(mais sans texte supplémentaire pour dépréciée)OLEVariant
{$J+}
)varargs
de fonctions externes (mais uniquement pour lacdecl
convention d'appel)Delphi 5
Pas de nouvelles fonctionnalités linguistiques, mais:
Delphi 4
LongWord
etInt64
;Cardinal
est un UINT32 (avant qu'il ne soit une valeur 31 bits non signée)Real
prend 8 octets et est le même quedouble
(auparavant, il était de 6 octets);{$REALCOMPATIBILITY ON}
directive du compilateur;REAL48
remplace l'ancien 6 octetsreal
;resourcestrings
{$EXTERNALSYM}
et{$NODEFINE}
directivesimplements
mot-clé pour les propriétésDelphi 3
true
au-1
lieu de 1 (Boolean est inchangé)packages
.out
paramètres.Widestring
interface
et prise en charge desdispinterface
mots clés et COM (dispid
).Delphi 2
Ansistring
remplaceshortstring
comme type de chaîne par défautCurrency
Variant
(pour l'interopérabilité avec l'automatisation OLE).ThreadVar
mot - clé.packed
mot-clé remplace ce comportement;1899/12/30
sous D1, il a commencé à0000/00/00
finalization
mot-cléregister
etstdcall
les conventions d'appel ajoutées.packed
mot-clé.la source
$LIBPREFIX
et autres directives sont là au moins depuis D7 (je soupçonne D6, puisqu'elles sont liées à Kylix)Juste pour compléter la réponse de Johan, consultez cette entrée sur mon blog
List of changes between versions of Delphi (Since Delphi 5)
et l'excellente pageThe TIndex
qui répertorie la plupart des nouvelles fonctionnalités depuis Delphi 2005 et des ressources sur chacune d'elles.la source
Le fichier jedi.inc utilisé par le projet Dephi JEDI expose une série de définitions de fonctionnalités. Si votre projet est compatible MPL, vous pouvez même l'utiliser pour la détection de fonctionnalités et vous éviter de réinventer cette roue particulière.
Par exemple, il définit
SUPPORTS_FOR_IN
si le compilateur prend en charge les énumérateurs. On pourrait envelopper votre code d'énumérateur dans uneIFDEF
vérification de cette définition plutôt que de vérifier une version particulière du compilateur.la source
jedi.inc
au moins exact, alors que la liste de Johan a besoin de quelques vérifications.