![]() |
Zirkuläre Uni-Referenz einer Unit auf sich selbst?
Meine Delphi 2007 spuckt mir zur Zeit einen Fehler aus den ich nicht verstehen.
Ich bekomme folgenden Fehler: [DCC Fehler] Unitx.pas (10): F2047 Zirkuläre Unit-Referenz auf Unitx.pas Also eine Unit referenziert sich selbst zirkulär?? Wie kann das sein, ich dachte bisher immer für eine zirkuläre Referenz müssten mindestens zwei Units beteiligt sein. Vielen Dank euch schonmal im Vorraus :) |
Re: Zirkuläre Uni-Referenz einer Unit auf sich selbst?
Hast Du die Unit evtl. innerhalb der der Unit selbst referenziert? Gibt es vielleicht eine Unit mit selbem Namen im Suchpfad? Was passiert, wenn Du alle DCU Dateien löscht und das Projekt neu erzeugst?
Viele Grüße |
Re: Zirkuläre Uni-Referenz einer Unit auf sich selbst?
Ich konnte es inzwischen lösen, allerdings ist mir trotzdem nicht ganz klar wo der Fehler lag.
Die Unit habe ich nicht innnerhalb von sich selbst referenziert. Der Compiler zeigte mir in der Uses Liste allerdings immer eine Unit mit Rot an. Anscheinend ist das die zweite Unit im Bunde dieser zirkuläre Referenz. Nur komisch dass ich in dieser Rot markierten Unit die Unit aus der Fehlermeldung gar nicht referenziert habe. Kann eine zirkuläre Referenz auch einen größen Zirkel als nur 2 Units haben? |
Re: Zirkuläre Uni-Referenz einer Unit auf sich selbst?
Zitat:
In dem Fall gehört dann eine der Units unter implementation. |
Re: Zirkuläre Uni-Referenz einer Unit auf sich selbst?
In meinem Fall wurde die bemängelte Unit2 ja gar nicht in der Unit1 referenziert.
Das hatte mich so sehr gewundert. Als würde der Kreis hier nicht nur aus zwei Units bestehen |
Re: Zirkuläre Uni-Referenz einer Unit auf sich selbst?
Ja, z.B.:
Code:
Was passiert ist, dass der Compiler den Interfaceteil von Unit1 abarbeitet, dabei die Referenz auf Unit2 findet, also erst den dort abarbeitet, dort die Referenz auf Unit3 finden, ...
Unit1:
uses Unit2; Unit2: uses Unit3; Unit3: uses Unit1; So, jetzt müsste erst der komplette Interfaceteil von Unit1 abgearbeitet werden um den von Unit3 abzuarbeiten. Und damit schließt sich der Kreis. Da Delphi einen Single-Pass-Compiler hat, lässt sich das nicht anders lösen als eine der Units nach implementation zu verschieben. Dieser Teil der Unit wird erst danach abgearbeitet. |
Re: Zirkuläre Uni-Referenz einer Unit auf sich selbst?
Aha, also gehts tatsache auch über mehr als 2 Units. Super dann weiss ich bescheid. Die entsprechende Unit zu finden kann in dem Fall allerdings mühsehlig sein.
Aber danke :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz