AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Kreuz-Zugriff zweier Units - Alternativen?
Thema durchsuchen
Ansicht
Themen-Optionen

Kreuz-Zugriff zweier Units - Alternativen?

Ein Thema von Nonsense · begonnen am 10. Apr 2004 · letzter Beitrag vom 10. Apr 2004
Antwort Antwort
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#1

Kreuz-Zugriff zweier Units - Alternativen?

  Alt 10. Apr 2004, 14:51
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Kreuz-Zugriff zweier Units - Alternativen?

  Alt 10. Apr 2004, 14:54
Eine uses im Interface Abschnitt nutzen und dann kannst du direkt hinter implemenation noch mal einen uses Abschnitt einfügen, dann sollte es gehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Kreuz-Zugriff zweier Units - Alternativen?

  Alt 10. Apr 2004, 14:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#4

Re: Kreuz-Zugriff zweier Units - Alternativen?

  Alt 10. Apr 2004, 14:58
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:41 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