![]() |
Re: Klassen-Querverweise
Zirkuläre Referenz. Der Compiler knallt dir das ins Gesicht und verabschiedet sich ;)
|
Re: Klassen-Querverweise
Und wenn ich das aber so haben will?
|
Re: Klassen-Querverweise
Wollen :roll: Du darfst nicht, das ist definiert ;) Versuch mal das zu kompilieren, wie du auch tust, es wird nicht gehen ^^ Gänge es, würde sich der Compiler in einer Endlosschleife verfangen.
|
Re: Klassen-Querverweise
Es gibt noch zwei - nicht besonders schöne, aber dennoch funktionierende Möglichkeiten:
- TypeCasts:
Delphi-Quellcode:
- über ne (globale) Variable auf die anderen Klassen zugreifen:
Parent: TObject;
implementation uses ParenTUnit; procedure DoSomething; begin (Parent as TParent).Irgendwas := 0; end;
Delphi-Quellcode:
Letzterses funktioniert aber nur, wenn du nur eine Instanz deiner Referenzierten Klasse hast. Alles andere wird mit der Zeit unübersichtlich.
unit Main_class
MainClass = class(TObject) private FParent: TParent; FChild: TChild; public <entsprechende properties>; ... unit MainForm_U; var Form1: Form1; MainClass: TMainClass; unit Child_class TParent = class(TObject) ... procedure DoSomething; begin MainClass.Parent.Irgendwas := 0; end; mfg Christian |
Re: Klassen-Querverweise
das erstere (mit dem Typecast) sieht zwar schrecklich aus und zerbricht das saubere Konzept, aber es wird wohl das einfachste sein.
Zitat:
|
Re: Klassen-Querverweise
Zitat:
btw: Das Beispiel in dem anderen Thread hat anscheinend einen Bug im D2005 Komposter gefunbden. :mrgreen: |
Re: Klassen-Querverweise
irgendwo hast du recht. aber andererseits ist es auch wieder sau kompliziert!
|
Re: Klassen-Querverweise
Zitat:
|
Re: Klassen-Querverweise
ich werde jetzt erstmal testen, ob es nicht reicht, die variable im interface als TObject zu deklarieren und dann in der implementation auf den jeweiligen objekttyp zu casten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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