Autor Beitrag
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mi 19.07.06 14:55 
Ich habe zwei Units. Einmal die Hauptunit und eine weitere mit einer eigenen Klasse. In der Hauptunit ist ein Record deklariert, der in der zweiten Unit gebraucht wird. Darum füge ich dort ein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
unit Blubb;

interface

uses main;

Ok. Wenn ich nun aber in der Hauptunit ein Objekt dieser Klasse erstellen will, muss ich ja dort auch irgendwo unter uses den Namen der zweiten Unit eintragen, damit diese Klasse in der Hauptunit überhaupt bekannt ist. Wenn ich nun in Main schreibe:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
unit main;

interface

uses ..., Blubb;

dann erscheint immer der Fehler
Zitat:

[Fataler Fehler] main.pas(7): Überkreuzender Bezug zweier Units auf 'main'

Was tun?

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 19.07.06 15:03 
-Daten in 3. Unit auslagern, welche von beiden Units benutzt wird
-In einer Unit im Interface und in der anderen unter Implementation

_________________
Markus Kinzler.
beljo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mi 19.07.06 16:21 
sofern Du in der Unit Main keine parameter an unit Blubb übergibst reicht es schon nur in der Unit Main die Unit Blubb anzugeben.
das auslagern in eine dritte Unit entfällt somit
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 19.07.06 16:25 
user profile iconbeljo hat folgendes geschrieben:
sofern Du in der Unit Main keine parameter an unit Blubb übergibst reicht es schon nur in der Unit Main die Unit Blubb anzugeben.
das auslagern in eine dritte Unit entfällt somit

Er braucht aber Daten aus Main in Blubb.

_________________
Markus Kinzler.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 19.07.06 17:50 
Solange nicht oberhalb von uses etwas aus der anderen Unit (z.B. ein Objekt als Variable) verwendet wird, kann einfach unterhalb von implementation uses xy geschrieben werden und es gibt kein Überkreuzen mehr.

Soll das Objekt der anderen Unit innerhalb einer Struktur benutzt werden, kann dieses als TObject Variable gespeichert werden und bei Benutzung zum eigentlichen Typ gecastet werden.
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Mi 19.07.06 17:54 
zweimal uses im Interface ist nicht erlaubt.
Maximal kannst du einmal inteface und einmal implementation nehmen.

Wenn sich die Daten nicht in implementation verschieben lassen, würde ich den Weg über die 3.Unit wählen.

Gruß alias5000

_________________
Programmers never die, they just GOSUB without RETURN
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 19.07.06 19:06 
Man kann in o. g. Fall den Datentyp, der in UnitMain gebraucht wird auch in UnitSub definieren und somit in beiden verwenden. Damit muss auch nicht überkreuzt werden und die Diskussion, ob im Interface oder Implementation Teil eine Unit eingebunden wird entfällt in diesem Fall.