Od jakiegoś czasu zauważyłem, że moje pytania mieszają się z nie wiedzą na poziomie początkującego i chęcią o sięgnięcia efektu na poziomie zaawansowanego programisty. Słowem coś tam wiem ale tu i ówdzie mam braki... a może to jest tak że im dalej w las tym więcej drzew :)
Znasz teorię? Ale tak dobrze (a nie słyszałem), OOP i wzorce projektowe? Wiesz jak z nich korzystać i dlaczego nie korzystać w niektórych przypadkach?
Jeśli nie znasz, to nie zrozumiesz nic z tego co napisałem.
Mogę odwołać się do do dowolnego obiektu w dowolnym momencie - o to chodzi?
Nie ukrywam, że 3 razy czytałem ten fragment ale jak się nie wie wszystkiego to się nie rozumie za dużo z "obcego" kodu. nie mniej jednak właśnie chodzi o taka właśnie sprawę że w wybranych miejscach chciałbym w miarę prosty sposób manewrować danymi.
A co tam jest takiego trudnego? Pobieram instancję na kontener IoC, z kontenera wyciągam usługę, a z usługi zestaw danych (DataSet).
Potem do DataSetu dodaje metodę obsługi zdarzenia, ale nie jest to zwykły TNotifyEvent tylko delegat (powiedzmy - taki obserwator). A więc mogę do jednego zdarzenia podpiąc wiele metod, które będą na to reagowały.
Tylko, żeby to zrobić musiałem napisać cały podsystem który tym zarządza. Musiałem też napisać własne wersje komponentów DataSet, które obsługują zdarzenia w oparciu o delegaty.
Ale Ty nie musisz - Ty możesz wykorzystać Spring4Delphi albo i nawet LKSL. Jeśli nie wiesz o czym pisze, poszukaj ...
Ale najpierw musisz migrować do nowego Delphi - co najmniej wersja XE2. Co najmniej.
Trochę naświetliłem na koniec tematu
http://4programmers.net/Forum/Newbie/247978-jak_zamienic_pointer_procedury_na_tnotifyevent
Czytałem to, ale zmilczałem.
To jest wyjątkowo badziewny kod, związany drutem i jak na to patrzę to dostaję torsji.
Programowanie w ten sposób, to prosta droga do pięknej katastrofy zwanej w branży jako "spaghetti code" i "big ball of mud"; z tego wniskuję, że ze wzrocami u Ciebie jeszcze słabo, natomiast antywzorce sobie przyswajasz ekspresowo :)
http://pl.wikipedia.org/wiki/Antywzorzec_projektowy
W efekcie finalnym chciałbym mieć dostęp do .. bagatela przeglądu wszystkich danych. Spodobał mi się sposób że mając nazwę jako string procedury można ją wywołać.. więc teraz mając dostęp do tego jakie są w programie moduły, klasy, procedury w klasach i samotne, zmienne, np. podmieniać dane w rekordzie o nazwie..
Ale lista procedur w modułach i klasach była by najważniejsza.. wiem, że można sztucznie na piechotę tworzyć listy procedur ale to nie to samo. Bo to dodatkowy kod i praca.
Chcesz to zrobić dobrze? To najpierw to zaprojektuj - dobrze. Przemyśl.
Bo w tej chwili to... szkoda gadać; powiem tak - dostęp do "wszystkiego" jest po pierwsze błędem, po drugie jest niebezpieczny, a po trzecie i najważniejsze - nie, wcale nie potrzebujesz dostępu do wszystkiego ze wszystkiego.
A ja chciałem np. przeszukać wszystkie typy w programie (po stringu) i mieć możliwość podmiany wartości ich wartości albo wybrania typu wg jakiegoś kryterium.
Już Ci o tym pisano; to się da zrobić za pomocą RTTI, ale będzie to wymagało Delphi w wersji XE lub XE2 - co najmniej.
Da się i zrobić i w starym Delphi, ale nie tak na łapu capu - to wymaga tony kodu a przede wszystkim projektu.
Aaa... przypomniało mi sie coś; można tak na chama zrobić i w starym Delphi. Zobacz:
https://code.google.com/p/delphi-detours-library/
Na pierwszy rzut oka pomysł wydaje się futurologiczny bo nie mówię o konkretnych przypadkach ale to właśnie zależy do czego się zastosuje.
Na początek ten swobodny dostęp do procedur klasy ..
FindComponent był tylko przykładem, że to samo chciałbym odnieść do innych struktur i składowych.
Poprosiłem Cie o KONKRET.
To jest wg Ciebie opis konkretnego przypadku?
Skoro tak, to dostałeś odpowiedź; Twój kod jest do bani bo przypomina wielką kulę błota.
Musisz zaprojektować interfejsy i zastosować wzorce projektowe - może nie wprost, ale warto je znać.
Czyli - jakie pytanie, taka rada. Ogólna i nic z niej konkretnego nie wynika, czyli dokładnie tak samo jak Twoje pytanie ;-)