Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Circular unit reference (https://www.delphipraxis.net/177551-circular-unit-reference.html)

Klaus01 13. Nov 2013 10:19

Circular unit reference
 
Hallo,

wenn ich mit build mein Programm erstelle, bekomme ich diese Fehlermeldung um die Ohren gehauen:

[DCC Fatal Error] basicList.pas(5): F2047 Circular unit reference to 'dbInterface'

Die Unit basicList sieht so aus:
Delphi-Quellcode:
unit basicList;

interface
uses
   contnrs, listTypes, dbInterface;

Die Unit dbInterface sieht so aus:
Delphi-Quellcode:
unit dbInterface;

interface
uses
 Dialogs, DB, DBAccess, Uni, postgreSQLUniProvider, lab, listTypes,
 rack, device, deviceType, powerUnitType, powerUnit, deviceGroup, globalConst;
Ich sehe nicht, dass hier eine zirkulare Referenz besteht.
In der Unit dbInterface wird die Unit basicList nicht eingebunden.

Stehe da auf dem Schlauch..

Grüße
Klaus

jfheins 13. Nov 2013 10:22

AW: Circular unit reference
 
Der Kreis muss ja nicht zwingend aus nur 2 Units bestehen. Du müsstest also mal alle uses-Abschnitte dieser units durchgehen ( Dialogs, DB, DBAccess, Uni, postgreSQLUniProvider, lab, listTypes,
rack, device, deviceType, powerUnitType, powerUnit, deviceGroup, globalConst ) und gucken, ob da vielleicht irgendwo basicList eingebunden wird.

bcvs 13. Nov 2013 10:25

AW: Circular unit reference
 
Zitat:

Zitat von Klaus01 (Beitrag 1235678)
In der Unit dbInterface wird die Unit basicList nicht eingebunden.

Nicht direkt, aber vielleicht indirekt:

Unit A uses Unit B
Unit B uses Unit C
Unit C uses Unit A

baumina 13. Nov 2013 10:27

AW: Circular unit reference
 
Müsste er nicht bei "Projekt erzeugen" an die problematische Stelle springen?

Klaus01 13. Nov 2013 10:52

AW: Circular unit reference
 
Zitat:

Zitat von baumina (Beitrag 1235684)
Müsste er nicht bei "Projekt erzeugen" an die problematische Stelle springen?

Da zeigt der Cursor auf den Eintrag "dbInterface" in der Unit basicList.
Mit der oben genannten Fehlermeldung.

Die anderen Units werde ich auch überprüfen...

Hoffe ich finde etwas ...

Danke und Grüße
Klaus

sx2008 13. Nov 2013 12:05

AW: Circular unit reference
 
Die Unit basicList dürfte eigentlich die Unit dbInterface gar nicht benützen, denn "basic" deutet schon im Namen an dass in der Unit eine Basisklasse steckt.
Erst in einer abgeleiteten Klasse kommt dann der Zugriff auf Datenbanken ins Spiel.
Es gibt auch andere Möglichkeiten die Umklammerung der gegenseitigen Abhängkeiten aufzulösen.

Auf jeden Fall zeigt eine Circular Unit Reference an dass es Probleme beim Design der Klassen gibt.
Wenn man nur die Circular Unit Reference beseitigt aber nicht etwas tiefer gräbt ist es relativ wahrscheinlich dass man später wieder Probleme bekommt.

Klaus01 13. Nov 2013 13:50

AW: Circular unit reference
 
sodele,

es war in etwa so wie bcvs es beschrieben hat.

Ich werde dann im Klassendesign etwas ändern.

In der basicList wollte ich alle Funktionen kapseln welche auch die abgeleiteten Klassen zwingend benötigen.

Danke für die Denkanstösse.
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz