Exposer une ancienne unité

Exposer les identifiants d’autres unités par le biais d’une nouvelle unité

Il arrive parfois que vous deviez réexporter et rendre visibles des identifiants provenant d’une autre unité au sein de votre nouvelle unité courante. Résultat final : il suffit d’importer cette nouvelle unité pour pouvoir utiliser directement ces identifiants.

Cas d’utilisation :

  1. Assurer la compatibilité avec les anciennes versions d’unité et conserver l’ancienne syntaxe d’appel ;
  2. Encapsuler les unités bas niveau internes et masquer les fichiers d’implémentation sous-jacents aux utilisateurs externes.

Méthode de mise en œuvre : dans la section interface de l’unité courante, redéfinir des identifiants homonymes ou des alias afin de transmettre les types et constantes de l’unité sous-jacente.

Modifier MyUnit.pas

unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}

interface
uses Graphics;

type
  // Méthode 1 : Créer un alias, exposer Graphics.TColor sous le nom TMyColor
  TMyColor = TColor;

  // Méthode 2 : Exposer sous le nom d'origine ; le qualificateur Graphics. est obligatoire pour éviter les références circulaires
  TColor = Graphics.TColor;

const
  // Les constantes prennent aussi en charge la transmission pour exposition
  clYellow = Graphics.clYellow;
  clBlue = Graphics.clBlue;

implementation

end.Langage du code : JavaScript (javascript)

Exemple complet

unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}

interface
uses Graphics;

type
  // 1 Alias de type Graphics.TColor : TMyColor
  TMyColor = TColor;

  // 2 Exposer le nom d'origine
  // Utiliser Graphics. pour empêcher les boucles de référence
  TColor = Graphics.TColor;

const
  // Les constantes fonctionnent également
  clYellow = Graphics.clYellow;

implementation

end.Langage du code : JavaScript (javascript)

Programme principal

program showcolor;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}

uses MyUnit;
var
  C1: TMyColor;
  C2: TColor;

begin
  C1 := clYellow;
  C2 := clYellow;
end.
Langage du code : PHP (php)

Dans le programme principal, nous utilisons les noms redéfinis dans MyUnit.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *