Liste des caractéristiques de langue Delphi et version dans laquelle ils ont été introduits/dépréciés
avant de commencer, je tiens à souligner que j'ai honnêtement et sincèrement cherché à plusieurs reprises et exhaustivement via Google pour une telle chose, et été incapable d'en trouver un.
j'ai besoin (pour un projet que je suis en développement) une liste de tous Delphi (de 2007 à la toute dernière version, je n'ai plus l'appui de toute version antérieure à la version 2007) "Fonctions du Langage", et les versions dans lequel elles ont été introduites et (le cas échéant) obsolète, l'amélioration ou supprimé.
j'ai noté des questions similaires à celle-ci sur le débordement de la pile avant, bien que la plupart de ceux-ci ont été formulés sous la forme de" quelle caractéristique est la meilleure", et fermé comme jugé inadéquat.
si quelqu'un connaît une telle liste (ou a assez de temps libre pour en compiler une), je lui en serais très reconnaissant.
la réponse acceptée contiendra soit un lien vers une telle liste, soit la liste elle-même.
3 réponses
notez que cette réponse ne contient que la nouvelle langue caractéristiques
Voici les liens vers le RAD Studio docwiki:
- les nouveautés de Delphi et C++Builder 10.2 Tokyo
- les nouveautés de Delphi et C++Builder 10.1 Berlin
- Quoi de neuf? in Delphi and C++Builder 10 Seattle
- les nouveautés de Delphi et C++Builder XE8
- les nouveautés de Delphi et C++Builder XE7
- les nouveautés de Delphi et C++Builder XE6
- les nouveautés de Delphi et C++Builder XE5
- les nouveautés de Delphi et C++Builder XE4
- les nouveautés de Delphi et C++Builder XE3
- les nouveautés de Delphi et C++Builder XE2
- les nouveautés de Delphi et C++Builder XE
- les nouveautés de Delphi et C++Builder 2010
- les nouveautés de Delphi et C++Builder 2009
- Ce qui est Nouveau dans RAD Studio (Delphi 2007 pour Win32)
- What's New in RAD Studio (C++Builder 2007)
- Quoi de neuf à Delphi 2006
- Quoi de neuf à Delphi 2005
- Quoi de neuf à Delphi 7
- Quoi de neuf à Delphi 6
- Quoi de neuf à Delphi 5
- Quoi de neuf à Delphi 4
- Quoi de neuf à Delphi 3
- Quoi de neuf à Delphi 2
- Delphi 1 Features
La liste complète de Embarcadero: Quoi de neuf
Voir aussi: liste de David I
pour résumer:
Delphi 10.3 (Codename Carnival) (à confirmer)
- prise en charge pour OSX 64-bit
- types Nullables
- prise en charge des applications serveur Linux (Intel 64-bit utilisant LLVM et ARC).
- assigner un tableau dynamique à un pointeur en utilisant l'opérateur
@
n'est autorisé que si dur-coulée de la matrice. - Plus flexible de l'espace de noms de la résolution de noms d'unité
- support natif pour Utf8String et RawByteString type sur toutes les plateformes
- le
[weak]
,[unsafe]
et[volatile]
attributs sont supportés par tous les compilateurs. - la taille de extended sur OSX est maintenant de 16 octets.
- de la classe et d'enregistrer des aides ne peut pas accéder aux membres privés de la ou des classes de registres elles s'étendent .
- prise en charge pour Android jusqu'à 6.01.
- prise en charge pour Android 5.1.1 et iOS 8.4
- Improved OSX exception handling""
- Support for 64-bit iOS;
- nouveaux types entiers: FixedInt , FixedUInt entier de 32 bits types sur toutes les plateformes;
- nouveaux types d'entiers dépendant de la plate-forme: LongInt , LongWord (64 bits sur iOS-64, 32 bits sur toutes les autres plates-formes);
- Opérations À Chaîne Pris en charge sur les tableaux dynamiques
- bibliothèque parallèle ajoutée à la RTL
-
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;
- Le Soutien Android;
nécessite un dispositif avec ArmV6 + néon ou ArmV7 pour le déploiement
introduit conditionnel définir ANDROID - surcharge de l'opérateur pour les classes (mais seulement pour le compilateur NextGen {Android / iOS})
-
les nouvelles conditions suivantes sont introduites/activées dans XE4:
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
SOUSCERTAINEIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF- réintroduit le support pour iOS.
- Nouveau
dependency
directive pour spécifier les dépendances d'une bibliothèque externe (non documentée jusqu'à XE8). - ARC de soutien NextGen compilateurs (y compris les TObject.Disposition ).
notez qu'une grande partie du travail de base pour L'ARC était déjà en XE3, mais qu'une grande partie était désactivée - avant la version XE4,
$IF
ne pouvait se terminer qu'avec$IFEND
, et la$IFDEF
,$IFNDEF
,$IFOPT
les directives ne pouvaient être abrogées qu'avec$ENDIF
.
à XE4, cela a changé de sorte que $ENDIF est devenu un terminator accepté pour $IF, $IFDEF, $IFNDEF, et $IFOPT.
- enregistreurs pour types encastrés
- a supprimé le support pour iOS.
- fonctions intrinsèques atomiques:
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
- Introduction de la [ref] attribut .
- support de plateforme croisée pour Mac OSX (32 bits) et iOS;
- Support pour Win64;
- RTL modifié pour supporter la plate-forme cross;
-
Packed
Maintenant, les Forces de l'Octet d'Alignement de documents (Pré XE2 elle n'a pas nécessairement le faire) -
huit nouvelles définitions ont été ajoutées:
ALIGN_STACK
CPUX86
CPUX64
MACOS (Mac système d'exploitation)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64 - les noms complets des unités sont maintenant requis dans votre clause
uses
. -
{$ExcessPrecision on/off}
directive compilateur (x64 seulement) - les types de construction diffèrent selon la plateforme cible (32/64 bits)
- extension de Type de Données Est de 10 octets sur Win32, mais 8 (!) octets sur Win64
- la directive
{$STRINGCHECKS}
compilateur est ignorée dans XE; - nouvelle valeur de 16 octets pour la directive
{$ALIGN}
: Les valeurs acceptables pour les{$ALIGN}
directive comprennent 1, 2, 4, 8 et 16. - nouvelle" directive 1519220920", définit l'adresse de départ d'une procédure ou d'une fonction.
- Le
{$STRONGLINKTYPES ON}
directive - le Support des expressions régulières.
- Enhanced Delphi RTTI (Run Information Sur Le Type D'Heure).
- attributs
- l'opérateur
as
peut être utilisé pour renvoyer une référence d'interface à l'objet dont elle a été extraite. - l'opérateur
is
peut être utilisé pour vérifier si une référence d'interface a été extraite d'une certaine classe. - la coulée dangereuse normale peut être effectuée sur une interface:
TObject(SomeInterface)
. - nouvelle
delayed
directive indique qu'une bibliothèque externe comme une DLL n'est pas chargée au moment de la déclaration, mais c'est d'attendre jusqu'à ce que le premier appel à la méthode - Class Constructeur/Destructeur
- type intrinsèque
string
désormais les cartes àUnicodeString
; -
{$HighCharUnicode on|off}
directive sur les compilateurs - Génériques ;
-
function Default(T): T
fonction intrinsèque (non documentée) - pointeurs Intelligents ;
- méthodes anonymes ;
- Soutien pour les exceptions imbriquées et à l'exception de traçage ;
- support pour pointermath et une nouvelle directive de compilateur:
{$PointerMath on|off}
; - quatre nouveaux avertissements de compilateurs:
-
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'
;
-
- la fonction
Exit
peut prendre un paramètre spécifiant un résultat; -
resourcestrings
comme largeurs; -
TObject
a un pointeur caché supplémentaire àTMonitor
en plus de son pointeur VMT; - le
deprecated
mot-clé peut maintenant avoir le texte supplémentaire
- aucun changement de langue que je connaisse;
notez que Delphi 2007 est une version sans rupture, les DCU De D2006 fonctionneront sans changement dans D2007 ; - (L' .NET "personnalité" de l'année 2007 l'introduction de génériques )
- "15196290920 Renforcée" dossiers ;
- surcharge de l'opérateur ;
-
static
méthodes et propriétés; - class helpers ;
- FastMM est le gestionnaire de mémoire par défaut;
-
strict
privé/protégé visibilité mot-clé ; -
final
mot-clé pour les méthodes virtuelles; -
{$METHODINFO}
directive;
-
for ... in
boucles -
inline
mot-clé - Joker dans l'énoncé des utilisations autorisé 15191130920"
- types imbriqués
- constantes imbriquées
-
{$REGION}
/{$ENDREGION}
les directives
- trois avertissements de compilateurs supplémentaires:
- Unsafe_Type,
- Unsafe_Code, et
- Unsafe_Cast. ces avertissements sont désactivés par défaut, mais peuvent être activés
- nouvelle directive de compilation
{$WARN UNSAFE_CODE ON}
- Surcharges de routines qui format et analyser des nombres, la date-l'heure, et la monnaie à l'aide d'un
TFormatSettings
de la structure.
-
[TCustomVariantType][68]
offre la surcharge d'opérateur pour custom types de variantes - nouvelles directives de compilation:
-
{$IFDEF MSWINDOWS}
-
{$IFDEF LINUX}
-
{$LIBPREFIX}
-
{$LIBSUFFIX}
-
{$LIBVERSION}
-
{$MESSAGE 'message'}
-
{$SetPEFlags}
-
- Soutien pour
{$IF}{$ELSE}
directives de compilation - compilateurs faisant allusion à des directives:
experimental
,deprecated
,library
,platform
(mais sans texte supplémentaire pour déprécié)
La variante - N'est plus basée sur COM mais a été modifiée pour être compatible CLX, la variante basée sur COM a été renommée en
OLEVariant
- les constantes dactylographiées ne peuvent pas être affectées à (outrepasser avec
{$J+}
) - les types énumérés peuvent se voir attribuer une valeur explicite (cf c++);
- propriétés D'Interface
- Soutien à l'appel de
varargs
fonctions externes (mais uniquement pour lacdecl
calling convention) - variantes sur mesure
Pas de nouvelles fonctionnalités de langage, mais:
- tableaux Dynamiques
-
LongWord
etInt64
;Cardinal
est un UINT32 (avant il n'était pas signé le 31 bits de valeur) -
Real
prend 8 octets et est le même quedouble
(auparavant il était de 6 octets);- avec la nouvelle directive
{$REALCOMPATIBILITY ON}
; -
REAL48
remplace l'ancien 6-bytereal
;
- avec la nouvelle directive
- Soutien pour
resourcestrings
- méthode de la surcharge
- paramètres par défaut
-
{$EXTERNALSYM}
et{$NODEFINE}
directives -
implements
mot-clé pour les propriétés
- Wordbool, longbool et bytebool magasin
false
comme-1
au lieu de 1 (Booléen est inchangé) - les composants doivent être installés en utilisant
packages
.
"15191100920 des Assertions.
-
out
paramètres. -
Widestring
-
interface
etdispinterface
mot-clé et COM (dispid
).
- Support pour 32 bits;
-
Ansistring
remplaceshortstring
comme le type de chaîne de caractères par défaut -
Currency
-
Variant
(pour interop avec OLE automation). - Enfilage du soutien et de la 15198510920"
ThreadVar
mot-clé. - 4 octets de données est de 4 octets aligné nouveau
packed
mot-clé remplace ce comportement; - TDateTime commence à
1899/12/30
sous D1 il commence à0000/00/00
- nouveau
finalization
mot-clé -
register
etstdcall
conventions d'appel a ajouté. -
packed
mot-clé.
juste pour compléter la réponse de Johan vérifier cette entrée sur mon blog List of changes between versions of Delphi (Since Delphi 5)
et l'excellente page The TIndex
qui énumèrent la plupart des nouvelles fonctionnalités depuis delphi 2005 et des ressources sur chacun.
le jedi.inc fichier utilisé par le Dephi JEDI Project expose une série de caractéristiques définies. Si votre projet est compatible MPL, vous pouvez même l'utiliser pour la détection de fonctionnalités et vous épargner la peine de réinventer cette roue particulière.
par exemple, il définit SUPPORTS_FOR_IN
si le compilateur supporte les recenseurs. On pourrait envelopper votre code d'énumérateur dans une vérification IFDEF
pour ce définir plutôt que de vérifier pour un particulier version de compilateur.