Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kreuz-Zugriff zweier Units - Alternativen? (https://www.delphipraxis.net/19890-kreuz-zugriff-zweier-units-alternativen.html)

Nonsense 10. Apr 2004 13:51


Kreuz-Zugriff zweier Units - Alternativen?
 
Hallo Community,

ich habe da ein kleines Problem und weiß nicht so recht, wie ich dieses umgehen kann.
Gegeben sind exemplarisch 2 Units, welche jeweils eine Klasse "besitzen". Nun ist eine Klasse jeweils von der anderen Abhängig, d.h. es muss bei den Methoden immer die Instanz der anderen Klasse übergeben werden.
Delphi-Quellcode:
unit BeispielUnit1;

interface

uses
  BeispielUnit2;

type
  Klasse1 = class(TObject)
  private
  [...]
  public
    procedure TestProc(Klasse2: TKlasse2);
  end;

(* ************************************************** *)

unit BeispielUnit2;

interface

uses
  BeispielUnit1;

type
  Klasse2 = class(TObject)
  private
  [...]
  public
    procedure TestProc(Klasse1: TKlasse1);
  end
Natürlich bekomme ich jetzt einen Fehler ("Überkreuzender Bezug zweier Units ...").
Wie kann ich das jetzt umgehen? Ich dachte da an eine zentrale Handle-Klasse, welche Pointer auf die Klassen speichert. Kennt ihr was besseres?

Danke im Voraus.

Luckie 10. Apr 2004 13:54

Re: Kreuz-Zugriff zweier Units - Alternativen?
 
Eine uses im Interface Abschnitt nutzen und dann kannst du direkt hinter implemenation noch mal einen uses Abschnitt einfügen, dann sollte es gehen.

Bernhard Geyer 10. Apr 2004 13:57

Re: Kreuz-Zugriff zweier Units - Alternativen?
 
Ich hätte folgende Alternativen Anzubieten:

1, Beide Klassen in einer Unit implementieren und mittels Foword-Definition die Klassen bekannt machen

2, Basisklasse definieren, welche die Methoden als virtuell einführt und in der Implementierungsklasse überschrieben wird

3, Interface definieren und statt die Klasse zu übergeben mit dem Interfaces arbeiten.

Jede Methode hat Vor- und Nachteile (Aufwand, Verständlichkeit, Nutzen). Welche Alternative jetzt die beste für dein Problem ist läßt sich so einfach nicht sagen.

Zitat:

Eine uses im Interface Abschnitt nutzen und dann kannst du direkt hinter implemenation noch mal einen uses Abschnitt einfügen, dann sollte es gehen
Wird für das Beispiel nicht gehen, da in jeder Unit die Einbindung der anderen Unit schon im Interface-Teil nötig ist.

Nonsense 10. Apr 2004 13:58

Re: Kreuz-Zugriff zweier Units - Alternativen?
 
Hey, darauf hätte ich ja auch kommen können. Aber die feine programmiertechnische Art ist es doch auch nicht, oder?
Btw: Da fällt mir ein: Wenn aber die Methoden schon in ihrer Definition TKlasse1 oder TKlasse2 benötigen, kann ich es ja nicht hinters implementation hauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 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