web-dev-qa-db-fra.com

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

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

J'ai besoin (pour un projet que je suis en train de développer) d'une liste de tous les Delphi (de 2007 à la toute dernière version publiée, je ne supporte plus aucune version antérieure à 2007) "Fonctionnalités de langage", et les versions dans lesquelles elles ont été introduites et ( le cas échéant) obsolète, amélioré ou supprimé.

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 "quelle fonctionnalité est la meilleure" et clôturées comme jugées inappropriées.

Si quelqu'un connaît une telle liste (ou a suffisamment 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.

108
LaKraven

Notez que cette réponse ne répertorie que les nouvelles fonctionnalités langue
pas nouvelles fonctionnalités VCL/FMX.

Voici les liens vers le doc RAD Studio docwiki:

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


Résumer:

Delphi 10.3.x, 10.4 (pas encore sorti, c'est spéculatif)

Delphi 10.

  • Le compilateur Linux 64 bits n'utilise plus ARC , il utilise à la place le manuel géré par défaut, qui est le même que dans le compilateur Windows. Cela rend le portage de code de Windows ou OSX vers Linux beaucoup plus facile.
  • Variables en ligne avec inférence de type automatique
  • Prise en charge d'AnsiChar/AnsiString 8 bits dans enable sur Linux.
  • C++ Builder et Delphi utilisent désormais le même ABI pour tous les appels.

Delphi 10.2 Tokyo

Delphi 10.1 Berlin

Delphi 10 Seattle

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

Delphi XE8

  • Prise en charge d'iOS 64 bits;
  • Nouveaux types entiers: FixedInt , FixedUInt Types entiers 32 bits sur toutes les plateformes;
  • Nouveaux types 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

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

Delphi XE

Delphi XE2

Delphi XE

  • La directive du compilateur {$STRINGCHECKS} Est ignorée dans XE;
  • Nouvelle valeur de 16 octets pour la directive {$ALIGN}: Les valeurs acceptables pour la directive {$ALIGN} Incluent désormais 1, 2, 4, 8 et 16.
  • nouvelle directive {$CODEALIGN}, cela définit l'adresse de départ d'une procédure ou d'une fonction.
  • La directive {$STRONGLINKTYPES ON}
  • Prise en charge des expressions régulières.

Delphi 201

  • Delphi RTTI amélioré (informations sur le type d'exécution).
  • Attributs
  • L'opérateur as peut être utilisé pour reconstituer une référence d'interface à l'objet à partir duquel 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.
  • Une conversion non sécurisée normale peut être effectuée sur une interface: TObject(SomeInterface).
  • la nouvelle directive 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 à la méthode
  • Constructeur/Destructeur de classe

Delphi 2009

Delphi 2007

  • Aucun changement de langue que je sache;
    Notez que Delphi 2007 est une version ininterrompue, les DCU de D2006 fonctionneront inchangées dans D2007;
  • (La "personnalité" .NET de 2007 génériques introduits )

Delphi 2006

Delphi 2005

  • for ... in Boucles,
  • inline mot clé
  • Caractère générique dans les utilisations autorisé
  • types imbriqués
  • constantes imbriquées
  • {$REGION}/{$ENDREGION} Directives

Delphi 7

  • trois avertissements supplémentaires du 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 de routines qui formatent et analysent les nombres, les valeurs date-heure et les devises à l'aide d'une structure TFormatSettings.

Delphi 6

Delphi 5

Pas de nouvelles fonctionnalités linguistiques, mais:

Delphi 4

  • Tableaux dynamiques
  • LongWord et Int64; Cardinal est un UINT32 (avant sa valeur 31 bits non signée)
  • Real prend 8 octets et est identique à double (auparavant il était de 6 octets);
    • Remplacez par la nouvelle directive de compilation {$REALCOMPATIBILITY ON};
    • REAL48 Remplace l'ancien 6 octets real;
  • Prise en charge de resourcestrings
  • surcharge de méthode
  • Paramètres par défaut
  • Directives {$EXTERNALSYM} Et {$NODEFINE}
  • implements mot clé pour les propriétés

Delphi

  • Wordbool, longbool et bytebool stockent true sous -1 Au lieu de 1 (le booléen est inchangé)
  • Les composants doivent être installés à l'aide de packages.
  • Assertions.
  • out paramètres.
  • Widestring
  • interface et dispinterface mot clé et prise en charge COM (dispid).

Delphi 2

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

Juste pour compléter la réponse de Johan vérifiez cette entrée 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.

16
RRUZ

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 épargner la peine 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 énumérateur dans un IFDEF en vérifiant cette définition plutôt qu'en vérifiant une version particulière du compilateur.

7
afrazier