AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Trick um "überkreuzenden Bezug" von Units zu umgehen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Trick um "überkreuzenden Bezug" von Units zu umgehen ?

Offene Frage von "dartrax"
Ein Thema von stoxx · begonnen am 5. Okt 2004 · letzter Beitrag vom 8. Mai 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

Trick um "überkreuzenden Bezug" von Units zu umgeh

  Alt 5. Okt 2004, 16:33
kennt irgendjemand eine clevere Möglichkeit um nicht Haufen Umwege gehen zu müssen ?

Ich habe zwei Objecte in zwei verschiedenen Units.
Und will von jedem Object einen Zeiger auf das andere Object speichern können.

in Unit1:

Code:
TClass1 = class

 p : TClass2;

end;
in Unit2:

Code:
TClass2 = class

 p : TClass1;

end;
dummerweise muss ich nun in Unit2 die Unit1 in den Uses Klauseln einfügen und umgekehrt.
Dummerweise kommt ja nun die Meldung "Überkreuzender Bezug zweier Units"
HAb schon einige ZEit gegrübelt, kann man das irgendwie über eine dritte Unit umgehen ?
Forward Deklarationen ? mir is noch keine Lösung eingefallen ?

will nich immer mit:

Code:
TClass2 = class

 p : TObject;

end;
arbeiten .. ständig die Zeiger beim programmieren zu typisieren macht auch keine Laune !

Dankeschön !
  Mit Zitat antworten Zitat
Maa83

Registriert seit: 7. Nov 2002
220 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 5. Okt 2004, 17:02
es kommt zwar drauf an was du genau machen möchtest. Aber mit einer 3ten Unit würde das schon gehen.

In Unit 1 und Unit2 jeweils ein uses auf Unit3

in Unit 3 ein Uses auf Unit1 und Unit2. Nun in dieser Unit die beiden Variablen deklarieren:

var p1 : TClass1;
var p2 : TClass2;

Nun kannst du in Unit1 das Object p2 verwenden und in Unit2 das Object p1 (erzeugen nicht vergessen )

vielleicht hab ich dich auch ganz falsch verstanden...
Martin
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 5. Okt 2004, 17:07
Das müsste auch gehen, wenn du z.B. in Unit1 die andere direkt in die Uses einfügst und in Unit2 nach implementation nochmal uses Unit1; schreibst
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#4

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 5. Okt 2004, 17:10
²jfheins: Das wird vermutlich nicht gehen, da die Klassendeklarationen (in denen man den Bezug auf die jeweils andere Unit ja schon benötigt) wohl im Interface-Teil stehen werden..

Ohne Globale Variablen *pfui* oder der TObject-Methode, die Du selbst schon angesprochen hast, siehts imho schlecht für Dich aus!

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 5. Okt 2004, 17:28
Moin Stoxx,

oder Du musst beide in einer Unit deklarieren.

Delphi-Quellcode:
type
  TClass1 = class;

  TClass2 = class
    F2 : TClass1;
  end;

  TClass1 = class
    F1 : TClass2;
  end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 5. Okt 2004, 18:05
Hallo An Alle,

@Maa83 .. da geht natürlich nicht, da man dort ja wieder den überkreuzenden bezug von Unit1/Unit3 und umgekehrt hat.
@jfheins .. ich brauch ja aber die Unit1 schon im interface Teil, das is ja gerade der Witz
@Christian .. so hab ichs nun auch gemacht. Dennoch kann ich ein Gesamtes Programm nich in einer Unit unterbringen
is auf Dauer halt sehr sehr schlecht ... aber scheint wohl doch nicht zu gehen.
habe D7 .. Ist das mit Delphi 8 / Delphi9 möglich sowas ?
  Mit Zitat antworten Zitat
Alienhere
(Gast)

n/a Beiträge
 
#7

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 5. Okt 2004, 19:02
Zitat von Steve:
Ohne Globale Variablen *pfui* oder der TObject-Methode, die Du selbst schon angesprochen hast, siehts imho schlecht für Dich aus!

Gruß
Stephan
@steve (und allgemein): Woher kommt eigentlich diese Abneigung gegen globale Variablen?

Weil man den Überblick verlieren könnte, wo sie in welcher Unit geändert werden könnten oder was?

Echt neugierig!

mfg
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#8

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 6. Okt 2004, 09:07
Nunja, ganz kurz und knapp gesagt: Mangelnde Übersichtlichkeit, mangelnde Kontrolle ( z.B. muss der Programmierer wissen, wann die Variable welche Werte annehmen kann, von wo aus sie geändert werden kann etc.); häufig ist damit eine unnötige Belegung von Speicherplatz verbunden; und vor allem widerspricht das allgemein der Idee des OOP, und innerhalb der OOP wiederum widersprächen (wenn sie denn generell mit oop vereinbar wären ) globale Variablen dem Geheimnisprinzip... Hinzu können Namenskonflikte kommen

Wie gesagt, Kurzfassung

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 6. Okt 2004, 09:53
Zitat von stoxx:
Ich habe zwei Objecte in zwei verschiedenen Units.
Und will von jedem Object einen Zeiger auf das andere Object speichern können.
Es kommt drauf an, wie stark die Objekte funktionell gekoppelt sind.
Bei schwacher Kopplung wäre das Observer-Visitor Design Pattern interessant:
http://www.castle-cadenza.demon.co.uk/observe.htm
http://blogs.teamb.com/joannacarter/articles/690.aspx
Oder eher umgekehrt: das Observer Pattern führt zu einer schwachen Kopplung zwischen den Objekten.
Andreas
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#10

Re: Trick um "überkreuzenden Bezug" von Units zu u

  Alt 7. Okt 2004, 12:10
Ist auch mit einem Zeiger lösbar:

Unit1.pas:
Delphi-Quellcode:
interface

uses Unit2;

TClass1 = class
  i: Integer;
  p: TClass2;
end;

Unit2.pas:
Delphi-Quellcode:
interface

TClass2 = class
  p: Pointer;
end;

implementation

uses Unit1;

procedure foo();
begin
  TClass1(p).i := 17;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 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