Estoy leyendo RAD Studio Documentation en Delphi XE. aquí algunos textos.delphi XE multi-unit namespace question
[Delphi Referencia -> Guía de Lenguaje Delphi -> Programas y Unidades -> Usar espacios de nombres -> Búsqueda de espacios de nombres -> Espacios de nombres Multi-unit]
Espacios de nombres Multi-unit
múltiples unidades puede pertenecer al mismo espacio de nombres, si las declaraciones de la unidad se refieren al mismo espacio de nombres. Por ejemplo, uno puede crear dos archivos, unit1.pas y unit2.pas, con las siguientes declaraciones de unidad:
// in file 'unit1.pas'
unit MyCompany.ProjectX.ProgramY.Unit1
// in file 'unit2.pas'
unit MyCompany.ProjectX.ProgramY.Unit2
En este ejemplo, el espacio de nombres contiene MyCompany.ProjectX.ProgramY lógicamente todos los símbolos de interfaz de unit1.pas y unit2.pas.
Los nombres de símbolo en un espacio de nombre deben ser únicos en todas las unidades del espacio de nombre.
En el ejemplo anterior, es un error para Unit1 y Tema 2. tanto a definir un símbolo de interfaz global llamada MySymbol
Probé esto. código a continuación.
-----------------------------------------------------------------
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Lib.A in 'Lib.A.pas',
Lib.B in 'Lib.B.pas';
begin
WriteLn (TestValue) ;
ReadLn ;
end.
-----------------------------------------------------------------
unit Lib.A;
interface
const TestValue : Integer = 10 ;
implementation
end.
-----------------------------------------------------------------
unit Lib.B;
interface
const TestValue : Integer = 10 ;
implementation
end.
Esto no es un error. ¿Por qué? No entiendo.
¿Qué ocurre si * solo * 'usa SysUtils, Lib' en' Project1' y 'TestValue: Integer = 20' en' Lib.B' y luego '' WriteLn (TestValue) 'en' Project1'? –
Supongo que Codegear tenía algunos planes irregulares para extender el concepto .Net de espacios de nombres en Delphi para Win32 que nunca se han implementado. Donde no hay espacios de nombres de unidades múltiples en Delphi, y es difícil decir de qué se trata la documentación anterior. – kludg