Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zirkuläre Unit (https://www.delphipraxis.net/80746-zirkulaere-unit.html)

Zita1989 14. Nov 2006 17:37


Zirkuläre Unit
 
Hi,
bei mir wird immer folgender Fehler angezeigt:
[Pascal Fataler Fehler] Console.pas(5): F2047 Zirkuläre Unit-Referenz auf 'Console'
was soll ich tun???

Bitte um Hilfe

Andidreas 14. Nov 2006 17:39

Re: Hilfe!!
 
aloha...

willkommen in der dp :party:

könntest du bitte denn titel deines themas anpassen, weil hilfe braucht hier fast jeder :lol:

etwas quell text wäre glaub hilfreich ;)

Matze 14. Nov 2006 17:41

Re: Hilfe!!
 
Hallo, herzlich willkommen.

Bitte ändere den Titel in einen aussagekräftigen.

Du bindest Units, wie die Meldung sagt, zirkulär ein.
D.h. du hast Beispielsweise Unit1 und dort ganz oben in den "uses" einen Verweis auf Unit 2 und in dieser wiederum einen auf Unit 1.

Schreibe die Einbindung der Units lieber in den implementation-Abschnitt:

Delphi-Quellcode:
implementation

uses
  Unit1, ...

3_of_8 14. Nov 2006 17:41

Re: Hilfe!!
 
Ganz einfach: Du hast eine zirkuläre Beziehung zwischen zwei Units, das heißt Unit A bindet Unit B ein, Unit B bindet Unit A ein. Der Compiler weiß in dem Fall nicht, welche Unit er zuerst parsen soll.

In der OH findest du einige Problemlösungen, zum Beispiel die beiden Units zusammenzulegen oder die Referenz in einer der beiden Units in den implementation-Teil zu verschieben.

Zita1989 14. Nov 2006 17:50

Re: Hilfe!!
 
danke erst einmal für die hilfe, aber meinst du mit OH???

Gruß
Zita

3_of_8 14. Nov 2006 17:53

Re: Hilfe!!
 
Mauszeiger drüber und warten. Dann kommt die Akronym-Beschreibung.

OH ist die Onlinehilfe von Delphi, einfach deinen Fehler markieren und F1 drücken.

Sunlight7 14. Nov 2006 19:07

Re: Zirkuläre Unit
 
Zitat:

Zitat von Zita1989
hi,
was muss ich tun wenn bei mir Zirkuläre Unit angezeigt wird???

Da Du nochmals nachgefragt hast:

Das passiert, wenn sich zwei, oder mehrere Units gegenseitig in der globalen (oberen) Uses Klausel referenzieren.

Unit1:
Delphi-Quellcode:
unit Unit1;

interface

uses Unit2;

...
Unit2:
Delphi-Quellcode:
unit Unit2;

interface

uses Unit1;

...

Lösungsbeispiel (wie von Matze):
Delphi-Quellcode:
unit Unit2;

interface

implementation

uses Unit1; // Lokale Uses Klausel

end.

3_of_8 14. Nov 2006 19:38

Re: Zirkuläre Unit
 
Funktioniert nicht unbedingt.

Beispiel: Unit1 referenziert im Interface eine Typendeklaration/Variable aus Unit2, Unit2 macht das gleiche mit Unit1. Die zirkuläre Referenz lässt sich hier nicht auflösen, indem man die uses-Klausel in die implementation verschiebt, sondern nur durch Zusammenlegung der Units.

DP-Maintenance 14. Nov 2006 21:34

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

Sunlight7 15. Nov 2006 01:10

Re: Zirkuläre Unit
 
Liste der Anhänge anzeigen (Anzahl: 1)
@3_of_8: Funktioniert doch, zumindest hier :mrgreen:

@Zita1989:

Hättest Du das gemacht, was wir Dir geraten haben, wärst Du schon weiter.
Ich hab das mal als Anhang abgehängt, um uns neue Threads zu dem Thema zu schenken...

Übrigens, der Programmierstiel ist nicht ohne, da hagelts ja Warnungen... :roteyes:
Und ein direkter Aufruf von TConsole.Irgendwas ist nicht erlaubt :warn: :wink:
Ich hab da eine Variable MyConsole rein gemacht :zwinker:

Grüßle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz