Expor identificadores de outras unidades através de uma nova unidade
Às vezes você precisa reexportar e disponibilizar os identificadores de outra unidade dentro da sua nova unidade atual. O resultado final: basta referenciar essa nova unidade para usar diretamente esses identificadores.
Cenários de aplicação:
- Garantir compatibilidade com versões antigas de unidades e manter a sintaxe de chamada legada;
- Encapsular unidades internas de baixo nível e ocultar os arquivos de implementação subjacentes de acessos externos.
Forma de implementação: na seção interface da unidade atual, redefina identificadores com mesmo nome ou apelidos para encaminhar tipos e constantes da unidade base.
Editar MyUnit.pas
unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
interface
uses Graphics;
type
// Forma 1: Criar apelido, expor Graphics.TColor externamente como TMyColor
TMyColor = TColor;
// Forma 2: Expor com o nome original; é obrigatório usar o qualificador Graphics. para evitar referências circulares
TColor = Graphics.TColor;
const
// Constantes também suportam encaminhamento para exposição
clYellow = Graphics.clYellow;
clBlue = Graphics.clBlue;
implementation
end.Code language: JavaScript (javascript)
Exemplo completo
unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
interface
uses Graphics;
type
// 1 Apelido de tipo Graphics.TColor: TMyColor
TMyColor = TColor;
// 2 Expor nome original
// use Graphics. para evitar ciclos de referência
TColor = Graphics.TColor;
const
// Constantes também funcionam
clYellow = Graphics.clYellow;
implementation
end.Code language: JavaScript (javascript)
Programa principal
program showcolor;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
uses MyUnit;
var
C1: TMyColor;
C2: TColor;
begin
C1 := clYellow;
C2 := clYellow;
end.
Code language: PHP (php)

No programa principal, utilizamos os nomes redefinidos dentro de MyUnit.

Previous: Identificadores qualificados por unidade
Next: O que é uma classe