![]() |
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:
Natürlich bekomme ich jetzt einen Fehler ("Überkreuzender Bezug zweier Units ...").
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 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. |
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.
|
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:
|
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 03:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz