RAD Studio (Common)
ContentsIndex
PreviousUpNext
F2047: Circular unit reference to '%s' (Delphi)

One or more units use each other in their interface parts. 

As the compiler has to translate the interface part of a unit before any other unit can use it, the compiler must be able to find a compilation order for the interface parts of the units. 

Check whether all the units in the uses clauses are really necessary, and whether some can be moved to the implementation part of a unit instead.

unit A;
interface
uses B;           (*A uses B, and B uses A*)
implementation
end.

unit B;
interface
uses A;
implementation
end.

The problem is caused because A and B use each other in their interface sections.

unit A;
interface
uses B;          (*Compilation order: B.interface, A, B.implementation*)
implementation
end.

unit B;
interface
implementation
uses A;          (*Moved to the implementation part*)
end.

You can break the cycle by moving one or more uses to the implementation part.

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!