Cómo resolver el problema de las referencias circulares
Artículo por Club Developers · 31 diciembre 2005
5784 vistas
Cuando dos ficheros tienen que referirse mutuamente, no podemos referenciar los dos en la cláusula uses de la interface ya que esto provocarÃa el error de "Referencia circular" en la compilació.
De esta manera, el código siguiente provocará un error de compilación:
Primera unidad
Segunda unidad
Para evitar este error podemos seguir una de estas soluciones:
Ejemplo de uso de la segunda solución
Primera unidad (no la modificamos)
Segunda unidad, desplazamos la declaración de la unidad a la sección Implementation
Para evitar este tipo de errores, es preferible el uso de la cláusula uses en la sección implementation. Sólo en el caso de que algún identificador de la sección Interface use alguno de la otra unidad será necesario su declaración en la cláusula uses de dicha sección.
De esta manera, el código siguiente provocará un error de compilación:
Primera unidad
delphi
Unit Unit1; interface uses Unit2; ... end;
Segunda unidad
delphi
unit Unit2; interface uses Unit1; // no es posible su utilización aquà ... end;
Para evitar este error podemos seguir una de estas soluciones:
- Hacer referencia a la otra unidad en la sencción Implementation en lugar de en Interface
- Poner una en la sección Interface y la otra en la sección Implementation
Ejemplo de uso de la segunda solución
Primera unidad (no la modificamos)
delphi
Unit Unit1; interface uses Unit2; ... end;
Segunda unidad, desplazamos la declaración de la unidad a la sección Implementation
delphi
unit Unit2; interface ... implementation uses Unit1; // Modificación ... end;
Para evitar este tipo de errores, es preferible el uso de la cláusula uses en la sección implementation. Sólo en el caso de que algún identificador de la sección Interface use alguno de la otra unidad será necesario su declaración en la cláusula uses de dicha sección.