Ver Mensaje Individual
  #6  
Antiguo 05-05-2005
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Buen día a todos!

Hombre Dec, gracias a ti por tus comentarios y no hay nada que disculpar. Por el contrario, creo que fui yo quien abusó de ligereza semántica.

Cita:
Empezado por dec
..."To reduce the chance of circular references, it's a good idea to list units in the implementation uses clause whenever possible. Only when identifiers from another unit are used in the interface section is it necessary to list that unit in the interface uses clause."...
En eso baso mi convicción de que el nombre de una unidad «no debe colocarse en la cláusula Uses de la interfaz», si lo que requiere esa unidad es y sólo es el código de la implementación. También lo hago por razones de organización, ya que me es más fácil asociar un identificador referenciado en la interfaz o en la implementación con alguna de las unidades listadas en la cláusula Uses respectiva. Aclaro que al expresar «no debe» no intento decir que no se pueda, sino que no es correcto desde mi punto de vista y el de muchos programadores Pascal.

Cita:
Empezado por dec
...me deja con la duda, como digo, de qué quieres decir exactamente con:

"...El nombre de la unidad Unit2 no debe colocarse en la cláusula Uses de la interfaz, sino en una cláusula Uses en la implementación. Ya que es en esta última sección donde el compilador encuentra referencias a los contenidos de Unit2."

¿No encuentra el compilador referencias a los identificadores de Unit2 si se utiliza la cláusula Interface en lugar de Implementation, siempre que no se haga uso de dichos identificadores en la cláusula Interface de la unidad o programa que referencie y utilize identificadores de Unit2?

Huelga decir que el código fuente de más arriba compila y hace lo que se espera...
Por supuesto que ha de compilar, eso es indudable. Cuando digo «es en esta última sección [implementación] donde el compilador encuentra referencias a los contenidos de Unit2» me refiero a que en tu ejemplo la interfaz de la unidad Unit1 no hace ninguna referencia a elementos contenidos en la unidad Unit2, en cambio la implementación sí. Por ello el compilador encontrará la primera referencia hacia un elemento de Unit2 hasta llegar a la implementación, con lo cual se vuelve innecesario que se declare «Unit2» en la cláusula Uses de la interfaz.

Cita:
Empezado por dec
...Seguro que sabrás quitarme el escrúpulo...
Pues eso si quién sabe, pero la lucha le hacemos .

¡Un abrazo a todos!

Y por favor ya no les llamen "librerías" a las bibliotecas, en buen plan.

Al González.
Responder Con Cita