122 votes

Liste des fonctionnalités du langage Delphi et version dans laquelle elles ont été introduites/dépréciées

Avant de commencer, je tiens à souligner que j'ai honnêtement et sincèrement cherché à plusieurs reprises et de manière exhaustive via Google une telle chose, et que je n'ai pas pu en trouver.

J'ai besoin (pour un projet que je développe) d'une liste de toutes les "fonctionnalités du langage" de Delphi (de 2007 à la dernière version publiée, je ne prends plus en charge les versions antérieures à 2007), ainsi que les versions dans lesquelles elles ont été introduites et (le cas échéant) dépréciées, améliorées ou supprimées.

J'ai déjà noté des questions similaires à celle-ci sur Stack Overflow, bien que la plupart d'entre elles aient été formulées sous la forme de "quelle est la meilleure fonctionnalité", et fermées car jugées inadaptées.

Si quelqu'un connaît une telle liste (ou a suffisamment de temps libre pour en dresser 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.

0 votes

Q : Alors pourquoi avez-vous besoin d'une telle liste ? Q : Essayez-vous de créer un jeu de codes (peut-être un composant ou une bibliothèque) qui prend en charge toutes les plates-formes entre BDS2007 et XE2 (c'est-à-dire qu'il utilise pas de plus récentes que le BDS2007) ? Q : Si c'est le cas, pourquoi ne pas simplement essayer de compiler sur 2007 et voir ce qui se casse ? (PS : je suis toujours heureux d'utiliser BDS2006 ;)).

8 votes

Simon vérifie cette question Liste assortie de nouveautés dans Delphi Language, RTL, VCL ? Sur mon blog, je maintiens également une mise à jour du site. Liste des changements entre les versions de Delphi

3 votes

@paulsm4 1) Pour que je puisse tenir compte des limitations de fonctionnalités entre les versions dans les bibliothèques publiques, 2) Oui (mais pas nécessairement une bibliothèque de composants), 3) Parce qu'il est plus facile de savoir à l'avance que de tester constamment sur différentes versions chaque aspect individuel d'une bibliothèque. Théoriquement, D2006 fonctionnerait bien, mais je ne vais pas le supporter activement (sans vouloir vous offenser).

171voto

Johan Points 34755

Notez que cette réponse ne liste que les nouvelles langue caractéristiques
pas les nouvelles fonctionnalités de VCL/FMX.

Voici les liens vers le docwiki de RAD Studio :

La liste complète d'Embarcadero : Quoi de neuf
Voir aussi : Liste de David I


Pour résumer :

Delphi 10.4

  • Gestion unifiée de la mémoire sur toutes les plateformes - le compilateur ARC complet a été supprimé et tous les compilateurs utilisent désormais la gestion manuelle (classique) de la mémoire pour les objets
  • Enregistrements gérés sur mesure
  • Prise en charge de macOS 64 bits
  • Prise en charge d'Android 64 bits

Delphi 10.3

  • Le compilateur Linux 64 bits n'utilise plus ARC il utilise plutôt la gestion manuelle par défaut, qui est la même que dans le compilateur Windows. Cela rend le portage du code de Windows ou OSX vers Linux beaucoup plus facile.
  • Variables en ligne avec inférence automatique de type
  • Le support des AnsiChar/AnsiString 8 bits est activé sous Linux.
  • C++Builder et Delphi utilisent désormais la même ABI pour tous les appels.

Delphi 10.2 Tokyo

Delphi 10.1 Berlin

Delphi 10 Seattle

  • Prise en charge d'Android 5.1.1 et d'iOS 8.4
  • Amélioration de la gestion des exceptions OSX

Delphi XE8

  • Prise en charge d'iOS 64 bits ;
  • Nouveaux types d'entiers : FixedInt , FixedUInt Types d'entiers 32 bits sur toutes les plateformes ;
  • Nouveaux types d'entiers dépendants de la plateforme : LongInt , LongWord (64 bits sur iOS-64, 32 bits sur toutes les autres plateformes) ;

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

Dans XE4, cela a changé de sorte que $ENDIF est devenu un terminateur accepté pour $IF, $IFDEF, $IFNDEF et $IFOPT.

Delphi XE3

Delphi XE2

Delphi XE

  • Le site {$STRINGCHECKS} est ignorée dans XE ;
  • Nouvelle valeur de 16 octets pour le {$ALIGN} de la directive : Les valeurs acceptables pour la directive {$ALIGN} comprennent maintenant 1, 2, 4, 8 et 16.
  • nouveau {$CODEALIGN} Cette directive définit l'adresse de départ d'une procédure ou d'une fonction.
  • Le site {$STRONGLINKTYPES ON} directive
  • Prise en charge des expressions régulières.

Delphi 2010

  • Amélioration du RTTI (Run Time Type Information) de Delphi.
  • Attributs
  • Le site as peut être utilisé pour retransférer une référence d'interface à l'objet dont elle a été extraite.
  • Le site is peut être utilisé pour vérifier si une référence d'interface a été extraite d'une certaine classe.
  • Un casting normal non sûr peut être effectué sur une interface : TObject(SomeInterface) .
  • nouveau delayed 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 de la méthode
  • Constructeur/Destructeur de classe

Delphi 2009

Delphi 2007

  • Aucun changement de langue à ma connaissance ;
    Notez que Delphi 2007 est une version non cassante, les DCU de D2006 fonctionneront sans changement dans D2007. ;
  • (La "personnalité" .NET de 2007 a introduit les génériques )

Delphi 2006

Delphi 2005

  • for ... in boucles,
  • inline mot-clé
  • Les caractères génériques sont autorisés dans les déclarations d'utilisation
  • types imbriqués
  • constantes imbriquées
  • {$REGION} / {$ENDREGION} directives

Delphi 7

  • trois avertissements supplémentaires pour le compilateur :
  • Unsafe_Type,
  • Unsafe_Code, et
  • Unsafe_Cast. Ces avertissements sont désactivés par défaut, mais peuvent être activés.
  • nouvelle directive du compilateur {$WARN UNSAFE_CODE ON}
  • Surcharges des routines qui formatent et analysent les nombres, les valeurs de date et d'heure, et la monnaie en utilisant un fichier de type "A". TFormatSettings structure.

Delphi 6

Delphi 5

Pas de nouvelles fonctionnalités de la langue, mais :

Delphi 4

  • Réseaux dynamiques
  • LongWord et Int64 ; Cardinal est un UINT32 (avant c'était une valeur non signée de 31 bits)
  • Real prend 8 octets et est identique à double (auparavant, il était de 6 octets) ;
    • Remplacer par la nouvelle {$REALCOMPATIBILITY ON} du compilateur ;
    • REAL48 remplace l'ancien système à 6 octets real ;
  • Soutien aux resourcestrings
  • Surcharge des méthodes
  • Paramètres par défaut
  • {$EXTERNALSYM} et {$NODEFINE} directives
  • implements mot-clé pour les propriétés

Delphi 3

  • Stockage de Wordbool, longbool et bytebool true comme -1 au lieu de 1 (le booléen reste inchangé)
  • Les composants doivent être installés en utilisant packages .
  • Affirmations.
  • out paramètres.
  • Widestring
  • interface et dispinterface et COM ( dispid ).

Delphi 2

  • Prise en charge de 32 bits ;
  • Ansistring remplace shortstring comme type de chaîne par défaut
  • Currency
  • Variant (pour l'interopérabilité avec l'automatisation OLE).
  • Support de filetage et ThreadVar mot-clé.
  • Les données de 4 octets sont alignées sur 4 octets nouveau packed remplace ce comportement ;
  • TDateTime commence à 1899/12/30 sous D1, il a commencé à 0000/00/00
  • nouveau finalization mot-clé
  • register et stdcall ajout de conventions d'appel.
  • packed mot-clé.

0 votes

Ah, merveilleux ! Je n'arrivais pas à trouver un moyen de faire en sorte que le Docwiki m'affiche les pages spécifiques aux anciennes versions de Delphi (avant XE2)... je ne sais pas pourquoi ! C'est merveilleux, et a été marqué comme la bonne réponse ! Merci !

0 votes

DavidHeffernan Il est utile d'avoir les nouvelles fonctionnalités de 2007, car cela établit la base de référence... dans un sens, je saurai avec certitude si une partie de ce que je produis pourrait... peut-être travailler dans des versions antérieures (même si je n'ai pas l'intention de les supporter moi-même)

0 votes

Dans ce cas, pourquoi s'arrêter à 2007.

16voto

RRUZ Points 98685

Juste pour compléter la réponse de Johan consultez cet article sur mon blog List of changes between versions of Delphi (Since Delphi 5) et l'excellente page The TIndex qui répertorie la plupart des nouvelles fonctionnalités depuis delphi 2005 et des ressources sur chacune d'elles.

0 votes

Il y a quelque temps, un autre site delphi delphi3000 a été marqué comme dangereux par un certain antivirus.

2 votes

Je suis le propriétaire de The TIndex et je peux confirmer que c'est un faux positif.

7voto

afrazier Points 2290

Le site jedi.inc utilisé par le projet Dephi JEDI expose une série de fonctionnalités définies. Si votre projet est compatible avec la MPL, vous pourriez même l'utiliser pour la détection des 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 énumérateurs. On peut envelopper le code de l'énumérateur dans un fichier de type IFDEF la vérification de cette définition plutôt que la vérification d'une version particulière du compilateur.

0 votes

Oui, cette liste est certainement utile, mais elle n'est pas aussi complète qu'une liste détaillée (d'où cette question). Merci pour la suggestion... considérez la réponse acceptée à cette question comme une amélioration des informations fournies par jedi.inc :)

1 votes

@LaKraven : C'est vrai qu'il y a beaucoup de choses qu'il n'a pas, mais pour certains ça peut être suffisant. Il a aussi l'avantage d'être déjà fait :-) Personnellement, je pense qu'il serait utile d'aplatir les hiérarchies de la VCL, de supprimer les en-têtes de droits d'auteur et de les jeter dans un dépôt de contrôle de version. De cette façon, vous pouvez voir quand des fonctionnalités RTL/VCL particulières ont été implémentées.

0 votes

@LaKraven, je crois que ce que jedi.inc au moins précise, tandis que la liste de Johan nécessite quelques vérifications.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X