Hola Karo,
Bienvenido a clubdelphi. Como eres nueva en los foros, te invito a que destines unos minutos para conocer la
guia de estilo.
Respecto a tu pregunta, sería oportuno que aclares mejor tu situación. Un ejemplo de como lo estás haciendo, o enfocando el problema.
Inicialmente si unit A debe comunicarse con otra B, A debe tener declarado en uses a B.
Ahora bien, si a su ves B debe comunicar a A algo, debe declarar en uses a A.
El problema es que si ambos se referencian... se forma una dependencia circular. Esto se soluciona trasladando la sección el "uses X" siendo X la unidad de A o B, de la sección interface a la sección implementation:
Código Delphi
[-]
...
implementation
uses UnitX;
...
Ahora bien, en lo posible deben evitarse éstas dependencias mutuas, se puede plantear alguna alternativa. Y es por ello que yo indicaba al comienzo si nos puedes comentar con mayores detalles tu caso.
Es una pregunta muy general el hecho de que "una unit deba devolver el dato a otra", cuanto más puntual seas más fácil será tratarlo.
Lo más elemental sería que en Unit2, exista alguna función o método (si es que le pertenece a una clase) que regrese el valor que unit1 necesita. De este modo se puede evitar esta mutua dependencia y sólo unit1 se mantiene acoplada a unit2. Algo así:
Código Delphi
[-]
Unit unit2;
...
interface
function UnaFuncion(Parametro: tipo_parametro): tipo_resultado;
...
implementation
function UnaFuncion(Parametro: tipo_parametro): tipo_resultado;
begin
...
end;
...
end.
Y de este modo, luego Unit1 puede hacer uso de Unit2:
Código Delphi
[-]Unit Unit1;
interface
uses Unit2;
...
implementation
procedure Form1.Button1Click(Sender: TObject);
var algo: tipo_resultado;
begin
algo := UnaFuncion(...);
end;
...
end.
Como te éstas iniciando en Delphi, sugiero que te acerques a la sección
FTP y
wiki del club. Allí encontrarás material tanto teórico como práctico. Recomiendo la lectura de la Cara Oculta de Delphi 4.
Si tienes mayores dudas puedes consultarnos, pero recomiendo que antes de iniciar un hilo nuevo, realices una
búsqueda. Existe la posibilidad de que tu duda haya sido tratada.
Por cualquier duda sobre este tema que iniciaste, continúa aquí por favor.
Saludos,