Evolutions de Delphi 1 (1995) a Delphi 7 (2002)

De Delphi 1 a Delphi 7.

Entre Delphi 1 (1995) et Delphi 7 (2002), 
le langage Object Pascal a évolué de manière significative 
pour répondre aux besoins croissants des développeurs. 
Voici un résumé des améliorations successives 
dans le langage lui-même entre ces versions :

Delphi 1 (1995)

- Introduction d'Object Pascal :
  - Basé sur Pascal, avec des extensions pour la programmation orientée objet (POO).
  - Support des classes, méthodes, propriétés et héritage.
  - Ajout des mots-clés `class`, `constructor`, `destructor`.

- Gestion des exceptions :
  - Premier support des exceptions avec `try...except` et `try...finally`.
  
  try
    // Code à tester
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
  

- Encapsulation et propriétés :
  - Introduction des propriétés comme abstraction pour les champs de données.
  
  TPerson = class
  private
    FName: string;
  public
    property Name: string read FName write FName;
  end;
  
------------------------------------------------------

Delphi 2 (1996)

- Types de données 32 bits :
  - Transition complète vers les applications 32 bits.
  - Types `LongWord`, `Int64`, `DWORD`, et `Pointer` ajoutés.

- Polymorphisme et mots-clés liés :
  - Mots-clés `override` et `virtual` pour renforcer le polymorphisme.

  TBase = class
    procedure Speak; virtual;
  end;

  TDerived = class(TBase)
    procedure Speak; override;
  end;


- Packages d'unités :
  - Les unités Object Pascal (`unit`) deviennent modulaires pour faciliter la maintenance.

------------------------------------------------------

Delphi 3 (1997)

- Automatisation COM/OLE :
  - Ajout du mot-clé `dispinterface` pour interagir avec les objets COM.
  - Simplification de l'appel d'objets Automation.

- Méthodes dynamiques (`dynamic`) :
  - Ajout des méthodes dynamiques pour une gestion optimisée des tables de dispatch.

- Classes abstraites :
  - Possibilité de définir des méthodes abstraites via le mot-clé `abstract`.

  TAbstract = class
    procedure DoSomething; virtual; abstract;
  end;

------------------------------------------------------

Delphi 4 (1998)

- Surcharge des méthodes :
  - Permet de définir plusieurs méthodes avec le même nom mais des signatures
 différentes grâce à `overload`.

  TMath = class
    function Add(a, b: Integer): Integer; overload;
    function Add(a, b, c: Integer): Integer; overload;
  end;


- Fonctions inline :
  - Optimisation via le mot-clé `inline` (inclusion directe dans le code).

- Initialisation simplifiée des propriétés :
  - Ajout de la syntaxe d'initialisation implicite.

  property MyProperty: Integer read FMyProperty default 0;


- Support des types variant (`Variant`) :
  - Permet de manipuler des types dynamiques sans spécification explicite.

  var
    V: Variant;

------------------------------------------------------

Delphi 5 (1999)

- Classes conteneurs et TStream :
  - Introduction de structures comme `TList`, `TStringList` 
et extensions sur `TStream` pour gérer les flux de données.

- Propriétés avec indexeurs :
  - Ajout de propriétés qui acceptent des paramètres, améliorant l'accès aux collections.

  property Items[Index: Integer]: TItem read GetItem write SetItem;


- Support des sous-plages :
  - Déclaration de types avec des sous-plages de valeurs.

  type
    TSmallRange = 1..10;

------------------------------------------------------

Delphi 6 (2001)

- Support XML et SOAP :
  - Intégration des interfaces pour XML et les web services SOAP, 
avec des ajustements du langage pour travailler avec des données distribuées.

- Attributs d'accès étendus :
  - Ajout de `published` pour rendre des propriétés accessibles aux outils
 de conception visuelle et aux bibliothèques.

- Propriétés par défaut sur les classes :
  - Possibilité de définir une méthode par défaut appelée via l'opérateur crochets `[]`.

- Mots-clés supplémentaires :
  - Introduction de `deprecated` pour signaler les éléments obsolètes.

  procedure OldMethod; deprecated;

------------------------------------------------------

Delphi 7 (2002)

- Support pour les environnements modernes :
  - Ajout d'optimisations pour les applications Windows XP, 
avec un support des thèmes visuels.

- Améliorations dans RTTI :
  - Meilleur accès aux informations de type au moment de l'exécution.

- Extensions des classes conteneurs :
  - Optimisations des types conteneurs comme `TList` et `TCollection`.

- Ajout du mot-clé `platform` :
  - Utilisé pour indiquer qu'une fonction ou une méthode est spécifique à une plateforme.

  procedure PlatformSpecific; platform;

------------------------------------------------------

Résumé des améliorations majeures

| Version | Améliorations principales                                                                |
|---------|------------------------------------------------------------------------------------------|
| Delphi 1 | Classes, gestion des exceptions, propriétés, POO de base.        |
| Delphi 2 | 32 bits, types supplémentaires, polymorphisme renforcé.            |
| Delphi 3 | Méthodes dynamiques, classes abstraites, automatisation COM.|
| Delphi 4 | Overload, inline, types variants, propriétés indexées.                   |
| Delphi 5 | Sous-plages de valeurs, flux de données, TList.                           |
| Delphi 6 | SOAP, XML, propriétés `published`, `deprecated`.                        |
| Delphi 7 | Compatibilité Windows XP, RTTI avancée, extensions des classes conteneurs.|

Ces évolutions ont permis à Delphi de passer d'un outil essentiellement 
Windows 16 bits à un environnement de développement robuste pour 
des applications modernes, tout en enrichissant le langage 
Object Pascal pour des besoins de plus en plus complexes.

Aucun commentaire: