AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zirkuläre Referenz von zwei Klassen vermeiden
Thema durchsuchen
Ansicht
Themen-Optionen

Zirkuläre Referenz von zwei Klassen vermeiden

Ein Thema von Chaosente · begonnen am 2. Jul 2007 · letzter Beitrag vom 4. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#11

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 17:09
Amen,

dankeschön wieder was dazu gelernt
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 18:45
Hallo,
es kann auch der Fall eintreten, dass die Klassen in getrennten units stehen müssen.
Hier kenne ich nur eine Lösung über eine "Zwischenunit" und Polymorphie.

Die Klassen TClass2 und TClass4 sind in getrennten unit deklariert.
in unit3 in der jeweils ein Vorfahre für TClass2 (TClass31) und TClass4 (TClass32)
deklariert
Delphi-Quellcode:
unit Unit3;

interface

Type

  TClass31 = class(TObject)
  private
  public
  end;

  TClass32 = class(TObject)
  private
  public
  end;

implementation

end.
In unit2 wird jetzt unit3 eingebunden und FClass als TClass32 deklariert
jedoch als TClass4 erzeugt.
Delphi-Quellcode:
unit Unit2;

interface

uses unit3;

Type

  TClass2 = class(TClass31)
  private
    FClass : TClass32;
  public
    constructor Create;
    destructor Destroy; override;
  end;

implementation

uses unit4;

{ TClass2 }

constructor TClass2.Create;
begin
  inherited Create;
  FClass:=TClass4.Create;
end;

destructor TClass2.Destroy;
begin
  FClass.Free;
  inherited Destroy;
end;

end.
In unit4 wird ebenfalls unit3 eingebunden FClass als TClass31 deklariert
jedoch als TClass2 erzeugt.
Delphi-Quellcode:
unit Unit4;

interface

uses unit3;

Type

  TClass4 = class(TClass32)
  private
    FClass : TClass31;
  public
    constructor Create;
    destructor Destroy; override;
  end;


implementation

uses unit2;

{ TClass4 }

constructor TClass4.Create;
begin
  inherited Create;
  FClass:=TClass2.Create;
end;

destructor TClass4.Destroy;
begin
  FClass.Free;
  inherited Destroy;
end;

end.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Oxmyx

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

Re: Zirkuläre Referenz von zwei Klassen vermeiden

  Alt 4. Jul 2007, 19:41
Ich hab das, wenn es sich nicht vermeiden ließ, meist so gelöst:

Unit1:
Delphi-Quellcode:
interface

uses Unit2;

type
  KlasseA = class
  ...
    b: KlasseB;
  end;
Unit2:
Delphi-Quellcode:
interface

type
  KlasseB = class
  ...
    a: TObject;
  end;

implementation

uses
  Unit1;
...und dann eben in KlasseB jedes Mal casten, wenn "a" aufgerufen werden soll.

Ist nicht schön, aber auch nicht so schlimm.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:58 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