Autor |
Beitrag |
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Di 23.01.07 20:01
Ich habe in main einen Typ definiert:
Delphi-Quelltext 1:
| TVisibility = (viPrivate, viPublic, viProtected); |
Dieser wird in der Unit ObjectMethod benötigt.
Darum steht main in der uses-Liste von ObjectMethod:
Delphi-Quelltext 1:
| uses Parameterlist,main,Objectclass; |
Da ich aber in main mit der Klasse aus ObjectMethod arbeiten will, ist ObjectMethod in der uses-Liste von main eingetragen:
Delphi-Quelltext 1: 2: 3:
| uses ... ObjectMethod ... |
Nun meint Delphi aber folgendes:
Error hat folgendes geschrieben: | [Fataler Fehler] main.pas(7): Überkreuzender Bezug zweier Units auf 'main' |
Was kann ich dagegen 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
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Di 23.01.07 20:06
Definier die Klasse in tVisibility im zweiten Formular, wenn das Konzeptmäßig geht.
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Di 23.01.07 20:09
Jann1k hat folgendes geschrieben: | Definier die Klasse in tVisibility im zweiten Formular, wenn das Konzeptmäßig geht. |
Ok, also:
- TVisibility ist ein Typ -> aber das ist auch egal
- es brauchen noch mehr Units TVisibility, deswegen wollte ich es an einer zentralen Stelle haben.
- ist es ein Problem, wenn ich TVisibility in mehreren Units gleich definiere?
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Di 23.01.07 20:14
Zitat: |
Ok, also:
- TVisibility ist ein Typ -> aber das ist auch egal
- es brauchen noch mehr Units TVisibility, deswegen wollte ich es an einer zentralen Stelle haben.
- ist es ein Problem, wenn ich TVisibility in mehreren Units gleich definiere?
|
Ganz ehrlich, ich hab keine Ahnung was der Unterschied zwischen Typ und Klasse ist, werd ich mich wenn ich später wieder da bin mal informieren.
Ob es ein Problem darstellt dieselbe Klasse in mehreren Units gleich zu definieren, kann ich dir nicht sicher sagen, so wie ich Delphi kenne, wird es ein Problem damit haben.
Spricht etwas dagegen eine eigene Unit für TVisibility zu erstellen?
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Di 23.01.07 20:17
Jann1k hat folgendes geschrieben: |
Ganz ehrlich, ich hab keine Ahnung was der Unterschied zwischen Typ und Klasse ist, werd ich mich wenn ich später wieder da bin mal informieren.
|
Ja mach das.
Jann1k hat folgendes geschrieben: |
Ob es ein Problem darstellt dieselbe Klasse in mehreren Units gleich zu definieren, kann ich dir nicht sicher sagen, so wie ich Delphi kenne, wird es ein Problem damit haben.
|
Es muss aber eine einfachere Lösung geben!
Jann1k hat folgendes geschrieben: |
Spricht etwas dagegen eine eigene Unit für TVisibility zu erstellen? |
Ja tut es: Warum soll ich für eine Typdeklaration eine eigene Unit erstellen? Das ist imho überflüssig!
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 23.01.07 20:48
Hallo!
Brauchst Du in einer der Units die jeweils andere nur im implementation- und nicht schon im interface-Teil? Dann kannst Du die uses-Klauses dorthin verlagern, das sollte den überkreuzenden Bezug auflösen.
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Di 23.01.07 20:56
Christian S. hat folgendes geschrieben: | Hallo!
Brauchst Du in einer der Units die jeweils andere nur im implementation- und nicht schon im interface-Teil? Dann kannst Du die uses-Klauses dorthin verlagern, das sollte den überkreuzenden Bezug auflösen.
Grüße
Christian |
Habe jetzt auf Hinweis BenBe's doch eine zusätzlich Unit genommen.
Was ist denn der Unterschied zwischen den beiden uses-Listen?
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 23.01.07 21:16
Lies Dir in der Delphi-Sprachreferenz (in der Hilfe enthalten) einfach mal den entsprechenden Abschnitt unterhalb von "Programme und Units" durch. 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: So 28.01.07 19:27
Habe wieder das Problem.
Ich brauche aber beide Units jeweils im Interface der anderen, ich kann sie nicht unter implementation schieben!
Was tun?
Da muss es doch eine Lösung für geben!
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: So 28.01.07 19:40
(a) mache eine Unit daraus
(b) lagere den Teil, den du benötigst in eine 3.Unit aus
(c) ???
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: So 28.01.07 19:46
Kroko hat folgendes geschrieben: | (a) mache eine Unit daraus
(b) lagere den Teil, den du benötigst in eine 3.Unit aus
(c) ??? |
Habe jetzt eine draus gemacht.
Nächstes Problem:
Klasse B ist sozusagen unter Klasse A deklariert.
Klasse A soll eine Instanz von Klasse B enthalten Diese ist aber erst unten deklariert -> Undefinierter Bezeichner!
Man könnte die ja einfach vertauschen! Aber: Klasse B soll auch eine Instanz von Klasse A enthalten. Dann tritt der gleiche Fehler auf, nur umgekehrt.
BenBe meinte was von Forward-Deklaration, aber das geht lauf DOH nur bei Methoden.  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
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 28.01.07 20:30
Marco D. hat folgendes geschrieben: | Was tun? |
Ein bisschen Experimentierfreude zeigen oder im Crashkurs nachschauen
www.christian-stelzm...hkurs.htm#forwarding
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|