Einzelnen Beitrag anzeigen

DGS

Registriert seit: 10. Jul 2004
65 Beiträge
 
Delphi 6 Enterprise
 
#1

Zyklusproblem ( Circular reference ) [solved]

  Alt 22. Apr 2007, 22:27
Moi.

Ich hatte das Wochenende vorgehabt Programm schön OO zu machen, was fehlgeschlagen ist.
Genauer gesagt, Circular Reference ist mein Problem.
Verschiebend er Unit in die implementation funktioniert nicht, da ich die Komponenten im interface verwende.

Folgendes Szenario (vereinfacht)
Unit1 ist meine Form1.
Inut2 enthält dann das eigentliche Programm (in wirklichkeit teilt die sich noch weiter auf )
Jedenfalls empfängt Unit1 die Ereignisse von der Form ( zB ButtonKlick ) und soll an meine Unit2 weiterleiten. Diese wertet diese aus ( eigentlich weiterleiten an weitere Klassen ) und reagiert halt drauf. In manchen Fällen brauch ich aber Zugriff auf die Form1.
Bei mir ist es so, dass die Unit2 eine Instanz der Unit2 erstellt. Ich wollte beim Create noch als Parameter die Form1 übergeben. Um diese aber in unit2 abspeichern zu können brauch ich da die Unit1 im Interface.

Generell heißt es, Crosslinks ( gegenseitige verlinkung ) sei ein ganz schlechter Programmierstill.
Was lässt sich da machen? Denn selbst wenn ich Pointer der wichtigsten Komponenten in record packe und die schicke, sozusagen eine Kopie der Form1 erstelle, hilft mir das nicht weiter.
Eine der Funktionen steuert die Sichtbarkeit der Form1 ( Form1.Hide und Form1.Show ). Ich wüsste nicht, wie ich das anstellen sollte.

Einzigster Geistesblitz kam mir gerade eben beim schreiben hier.
Ich hätte evtl die einzigste Chance, wenn ich in Unit1 die uses in implementationsabschnitt verschiebe. Jedenfalls erinnere ich mich da eine keine gekoppelten Funktionen im Interface, die nicht in implementation überleben würden.

Andere Alternative wäre es prozeduren auf function umzustellen und in der Form1 dann den Rückgabewert auszuwerten. Glaub, in dem Fall würde die abstraktion mich aber meinem Ziel nicht weiterbringen, den Quellcode übersichtlicher zu gestallten.
Vorschläge für sinnvolle Signatur bitter per PN
  Mit Zitat antworten Zitat