Autor Beitrag
TillW
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 19.03.04 18:40 
Mein Problem ist folgendes:
Ich habe ein Objekt1. Dieses erschafft zur Laufzeit zwei andere Objekte (Alle in verschiedenen Units). Diese sollen nun auf Eigenschaften des übergeordneten Objekt1 und des 'Schwesterobjektes' zugreifen. Da Objekt1 die anderen beiden Objekte erschafft stehen die dazugehörigen Units logischerweise im 'uses-Teil' des Objektes1. Gegenseitige Beziehungen sind ja bekanntermaßen nicht erlaubt, wie kann ich also das Problem umgehen und Objekt2 den Zugriff auf Eigenschaften von Objekt1 oder Objekt3 ermöglichen. Ist das überhaupt möglich ohne bei jedem Aufruf einer Methode von Objekt2 jedesmal die benötigten Eigenschaften direkt zu übergeben?
Ich hab da sowas von Pointern gehört... soweit ich weiss kann man damit direkt auf Speicheradressen zugreifen, damit könnte ich ja vielleicht ein solches Problem umgehen.
Was ich brauche ist vorerst keine konkrete Lösung sondern vielleicht ein paar Vorschläge wie ich Vorgehen kann. Das ist jetzt mein zweiter Versuch Hilfe in diesem Forum zu finden... vielleicht klappt es ja diesmal, ich wäre darum sehr dankbar.
In meinem ersten Beitrag zu diesem Problem habe ich etwas Quellcode gepostet... also wer sich die mühe machen will:
www.delphi-forum.de/viewtopic.php?t=23036 (Der Code steht etwas weiter unten)
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.03.04 19:28 
Überkreuzende Beziehungen sind schon möglich, allerdings musst du dafür eine 'Uses'-Klausel im 'Implementation'-Teil einfügen, denn nur da geht das.
Da du nur auf die Methoden und Variablen zugreifen möchtest, ist das hier ja auch total ausreichend.
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Fr 19.03.04 19:40 
Du mußt nur auf eines aufpassen - was mir passiert ist:

Der constrcurtor ist bei Zugriffen tabu - sprich, du erzeugst im constructor des Objekt1 ein Objekt2 - das ruft in seinem constrcutor eine Methode im Objekt1 auf.

Das geht nicht, da das Objekt1 erst gültig ist, nachdem es den constructor verlassen hat (jedenfalls außerhalb des scopes). Ich hab keine wirklich Erklärung dafür, da man ja im Objekt selbst ganz normal auf alles zugreifen kann - aber versucht man den self pointer zu übergeben, so kriegt man eine Zugriffsverletzung im Objekt2.

Na schön - aber das ist ein Rahmenproblem.

Wenn du unbedingt im interface Teil schon den Typ von Objekt1 brauchst und zwar nur als Referenz, dann kannst du es einfach umgehen, indem zu ein TObject nimmst. Der member/property/function-Parameter ist dann zwar quasi untyped, aber wenigstens kannst du ihn verwenden. Beispiel ist eben die Übergabe des Parents.

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.