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 :
- Assurer la compatibilité avec les anciennes versions d’unité et conserver l’ancienne syntaxe d’appel ;
- 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.

Previous: Identifiants qualifiés par unité
Next: Qu’est-ce qu’une classe