Similar a los espacios de nombres de C++, Java y C#
Conflictos de identificadores con el mismo nombre
Múltiples unidades pueden definir tipos / funciones / variables con nombres idénticos. Las unidades que aparezcan más tarde en la lista uses ocultarán los identificadores homónimos de las unidades anteriores.
Sintaxis de calificación por unidad
NombreUnidad.Identificador especifica explícitamente el origen, obliga a utilizar la definición de la unidad indicada y resuelve los conflictos de ocultación.
Los dos bloques uses actúan de forma independiente
interface uses:solo afecta a la sección de interfaz;implementation uses:solo afecta a la sección de implementación. Los identificadores de unidades de la sección de implementación ocultan aquellos homónimos de las unidades de la interfaz.
Ejemplo
Crea una unidad llamada Graphics.pas
unit Graphics;
{$mode objfpc}{$H+}
interface
type
TColor = LongInt;
const
clYellow = 10;
function Red(C:TColor):Integer;
function Green(C:TColor):Integer;
function Blue(C:TColor):Integer;
implementation
function Red(C:TColor):Integer; begin Result:=C shr 16; end;
function Green(C:TColor):Integer; begin Result:=(C shr 8) and 255; end;
function Blue(C:TColor):Integer; begin Result:=C and 255; end;
end.Lenguaje del código: JavaScript (javascript)
Luego crea otra unidad GoogleMapsEngine.pas
unit GoogleMapsEngine;
{$mode objfpc}{$H+}
interface
type
TColor = string; // Tipo totalmente distinto a Graphics.TColor
implementation
end.Lenguaje del código: PHP (php)
Tenemos dos tipos TColor con el mismo nombre aunque su estructura interna sea distinta
A continuación escribe el programa principal
program showcolor;
{$mode objfpc}{$H+}
{$apptype CONSOLE}
uses Graphics, GoogleMapsEngine;
var
// Color: TColor; // Error: tomará GoogleMapsEngine.TColor (tipo cadena) por aparecer después
Color: Graphics.TColor; // Correcto, calificación explícita de unidad
begin
Color := clYellow;
WriteLn(Red(Color), ' ', Green(Color), ' ', Blue(Color));
ReadLn;
end.Lenguaje del código: PHP (php)

Compila y ejecuta

Si omites el prefijo Graphics., se usará por defecto GoogleMapsEngine.TColor. ¿Por qué?
En el proyecto principal escribimos uses Graphics, GoogleMapsEngine;. Al aparecer GoogleMapsEngine en segundo lugar, cuando coincidan nombres como TColor, el compilador resuelve por defecto el tipo de la unidad posterior: GoogleMapsEngine.TColor.
Para diferenciarlos, escribe explícitamente Graphics.TColor. Funciona igual que los espacios de nombres y elimina cualquier conflicto de nombres.
Ejemplo erróneo
Si los tipos TColor de la sección interfaz y la implementación no coinciden, se producirá un error de compilación
Crea una nueva unidad UnitUsingColors.pas
unit UnitUsingColors;
{$mode objfpc}{$H+}
interface
uses Graphics;
procedure ShowColor(const Color: TColor);
implementation
uses GoogleMapsEngine; // El TColor de implementación oculta el definido en interfaz
// Aquí TColor hace referencia a GoogleMapsEngine.TColor
procedure ShowColor(const Color: TColor);
begin
end;
end.Lenguaje del código: JavaScript (javascript)
Referencia esta unidad en el programa principal mydemo.dpr
program showcolor;
{$mode objfpc}{$H+}
{$apptype CONSOLE}
uses UnitUsingColors;
begin
end.Lenguaje del código: PHP (php)
Basta con referenciar la unidad sin invocar sus funciones o procedimientos; si no se llama nada de su interior, el compilador saltará su compilación.

Desglose de la causa del error (punto de vista del compilador):
// Firma de interfaz
procedure ShowColor(const Color: Graphics.TColor);
// Firma de implementación
procedure ShowColor(const Color: GoogleMapsEngine.TColor);Lenguaje del código: JavaScript (javascript)
Modifica el código como se muestra a continuación
unit UnitUsingColors;
{$mode objfpc}{$H+}
interface
uses Graphics;
procedure ShowColor(const Color: TColor);
implementation
uses GoogleMapsEngine;
// Especifica explícitamente el TColor de Graphics para evitar el ocultamiento por tipo homónimo
procedure ShowColor(const Color: Graphics.TColor);
begin
end;
end.Lenguaje del código: JavaScript (javascript)

unit UnitUsingColors;
{$mode objfpc}{$H+}
interface
uses Graphics;
procedure ShowColor(const Color: TColor);
implementation
uses GoogleMapsEngine;
// Escribe explícitamente Graphics.TColor para unificar el tipo
procedure ShowColor(const Color: Graphics.TColor);
begin
WriteLn(Red(Color), Green(Color), Blue(Color));
end;
end.Lenguaje del código: JavaScript (javascript)
Resumen
Calificación de unidad NombreUnidad.Identificador permite controlar con precisión el origen de los tipos sin modificar el orden de las sentencias uses, evitando conflictos de nombres.