Article View: pl.comp.lang.delphi
Article #346394Circular Unit Reference (Circular Class Reference)
From: immo
Date: Wed, 07 Mar 2018 09:45
Date: Wed, 07 Mar 2018 09:45
62 lines
2883 bytes
2883 bytes
Hej, Zastanawiam się jak byście rozwiązali taki problem: Ma być jedna klasa (Singleton) główna - tzw Core. Ma w sobie mieć inne klasy ale zaimplementowane w taki sposób, żeby z każdej z nich można było wywołać Core.KlasaX.KlasaY ale na zasadzie deklaracji klasy, a nie odniesienia do jej fizycznego wystąpienia. Żeby uprościć to co chce osiągnąć: unit CoreMain; uses CoreConnection ,CoreLogic ,CoreTools ; TCoreMain = class Connection: TCoreConnection; Logic: TCoreLogic; Tools: TCoreTools; end; unit CoreConnection; uses CoreMain ; TCoreConnection = class Core: TCoreMain end; unit CoreLogic; uses CoreMain ; TCoreLogic = class Core: TCoreMain end; unit CoreTools; uses CoreMain ; TCoreTools = class Core: TCoreMain end; 1. Oczywiście to powyżej uproszczony przykład, ale mniej więcej pokazuje co chciałbym osiągnąć. 2. Zrobienie tego w ten sposób spowoduje błąd Circular Unit Reference, a co ciekawe w Delphi 10.2 nie pojawia się ten błąd ale wiele mówiący F2046: Out of memory :P 3. Chciałbym żeby przez wpisanie Core w dowolnej klasie mieć dostęp do tego co deklaruje sobie TCoreMain, ale nie przez cast typu np TObject. Tak się nad tym zastanawiam jak to zrobić ładnie i dlatego proszę Was o jakieś propozycje. Żeby nie było, ja coś takiego mam działającego :) i napiszę na koniec jak to zrobiłem. Niemniej jest to w bardzo starej apce, którą chciałbym częściowo przepisać na nowo stąd moje pytanie, bo być może jest "ładniejszy" sposób na wykonanie tego. pozdrawiam, Przemek O.
Technical Details
Message-ID:
<06e89078-c8b6-46f1-8353-fe26050464f7@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!e10no233906itf.0!news-out.google.com!a25ni562itj.0!nntp.google.com!r195no76162itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 10.36.192.194 with SMTP id u185mr5912793itf.35.1520415920687; Wed, 07 Mar 2018 01:45:20 -0800 (PST) X-Received: by 10.157.22.195 with SMTP id s3mr1147212ots.13.1520415920480; Wed, 07 Mar 2018 01:45:20 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!e10no233906itf.0!news-out.google.com!a25ni562itj.0!nntp.google.com!r195no76162itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Wed, 7 Mar 2018 01:45:20 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.65.28.194; posting-account=uWBjDgoAAACxkgIP6dtE4dpCnc16V86n NNTP-Posting-Host: 77.65.28.194 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <06e89078-c8b6-46f1-8353-fe26050464f7@googlegroups.com> Subject: Circular Unit Reference (Circular Class Reference) From: immo <przemek-o@soft-system.pl> Injection-Date: Wed, 07 Mar 2018 09:45:20 +0000 X-Received-Bytes: 2966 X-Received-Body-CRC: 2333808241 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit