AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi überkreuzender Bezug von Units .. kleiner Workaround
Thema durchsuchen
Ansicht
Themen-Optionen

überkreuzender Bezug von Units .. kleiner Workaround

Ein Thema von stoxx · begonnen am 24. Sep 2007 · letzter Beitrag vom 26. Sep 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von stoxx
stoxx

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

überkreuzender Bezug von Units .. kleiner Workaround

  Alt 24. Sep 2007, 14:39
Habe eine recht schöne Lösung gefunden, wie man trotz nicht gestattetem überkreuzenden Bezug von zwei Units, diese Geschichte schön umgehen kann, ohne ständig Casts durchzuführen ...

Ziel. Zwei klassen brauchen im Klassenmodell eine gegenseitige Referenz aufeinander, befinden sich aber in verschiedenen Units.. in anderen Sprachen ja nicht so das Problem, in delpi aber nicht möglich.....


Delphi-Quellcode:
TClassA = class(TObject)
  linkClassB : TClassB;
end;


TClassB = class(TObject)
  linkClassA : TClassA;
end;


Lösung ...


Delphi-Quellcode:
TClassA = class(TObject)
  linkClassB : TClassB;
end;


TClassB = class(TObject)
  _linkClassA : TObject;
end;
man speichert in _linkClassA die Referenz ab ... und greift nur noch über properties einer ClassHelper Klasse auf diese Referenz zu..

diese befindet sich aber NUR im Implementationteil der Unit, damit ist ein quasi überkreuzender Bezug von Units möglich..


Delphi-Quellcode:
implementation

uses UnitClassA;

type
  TConvertHelper = class helper for TClassB
  private
    function Get_linkClassA: TClassA;
    procedure Set_LinkClassA(const Value: TClassA);
  published

    property LinkClassA : TClassA read Get_LinkClassA write Set_LinkClassA;
  end;


//==============================================================================


function TConvertHelper.Get_LinkClassA: TClassA;
begin
  result := TClassA(_linkClassA);
end;
//==============================================================================
procedure TConvertHelper.Set_LinkClassA(const Value: TClassA);
begin
  _linkClassA := Value;
end;

und jetzt kann man in irgendeiner Methode von TClassB wunderschön mit


self.linkClassA auf das Object zugreifen, ohne ständig rumcasten zu müssen
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 25. Sep 2007, 14:51
Ok und in welcher Delphiversion funktioniert das?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 25. Sep 2007, 15:05
Hallo

http://delphi.about.com/od/delphifor...asshelpers.htm


also Delphi.Net: D2005/2006 (?) aufwärts.


Heiko
Heiko
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 25. Sep 2007, 15:40
Also in kleineren Versionen, überprüfe ich mit "is" bei "write property" ob es die korrekte Klasse ist.

Delphi-Quellcode:
property Xy : TObject read GetXy write SetXy;

procedure ...SetXy(Xy : TObject);
begin
  if not (Xy is TMyClass) then
    raise ....
end;
Ich weiß jedoch nicht, ob es auch für abgeleitete Klassen funktioniert. Ich könnte mir es aber vorstellen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

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

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 26. Sep 2007, 01:19
also sowohl in .NET als auch unter Win32 funktioniert das.
Ab Delphi 2005
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 26. Sep 2007, 01:31
Zitat von stoxx:
..Ziel. Zwei klassen brauchen im Klassenmodell eine gegenseitige Referenz aufeinander, befinden sich aber in verschiedenen Units..
Dann ist das Klassenmodell in 90 % der Fälle falsch. Lerne besser programmieren und spiele nicht so viel Billard.

Zitat:
in anderen Sprachen ja nicht so das Problem, in delpi aber nicht möglich.....
Unser Ober-Schwuchtel würde dazu sagen : Und das ist auch gut so.

Im Ernst : glaube nicht, dass ich solch ein Konstrukt in zig-Programmen verwenden MUSS. Es gibt keins. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 26. Sep 2007, 06:38
Zitat:
Im Ernst : glaube nicht, dass ich solch ein Konstrukt in zig-Programmen verwenden MUSS. Es gibt keins. Cool
Unter Win32 vielleicht nicht, aber unter .Net ist dies ein weitverbreitetes Konzept, vorallem bei den neueren Techniken
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 26. Sep 2007, 07:50
Zitat von Hansa:
Unser Ober-Schwuchtel würde dazu sagen : ...
Ihr Saarländer müsst grad reden, ihr mit Eurem narzißtischen Hobbit.

Äh?
Delphi-Quellcode:
Type
  TClassA = Class;
  TClassB = Class;
 ...
  TClassA = Class
    fRefB : TClassB;
  End;
  TClassB = Class
    fRefA : TClassA;
  End;
Oder hab ich was verpasst?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#9

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 26. Sep 2007, 09:07
Zitat von alzaimar:
Oder hab ich was verpasst?
Ja:
Zitat von stoxx:
Ziel. Zwei klassen brauchen im Klassenmodell eine gegenseitige Referenz aufeinander, befinden sich aber in verschiedenen Units..
Hatte aber beim ersten Lesen den gleichen Gedanken. Zum Glück konnte ich meinen Reflex zu posten noch rechtzeitig unterdrücken.

Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: überkreuzender Bezug von Units .. kleiner Workaround

  Alt 26. Sep 2007, 09:13
Ah. Na dann ... Ist die Aufteilung in Units falsch. Beide Klassen gehören, da untrennbar miteinander verbunden, auch zusammen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 14:00 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