Runtime. Список измененных методов | |
---|---|
Aijik Автор Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
Привет всем!
Есть вот какая задача. Надо в ран-тайме получить список методов, которые были изменены у некоего объекта на форме. Для свойств эта задача решается просто:
К сожалению, AMEMBERS не предоставляет того же механизма для методов. Потому как
AMEMBERS(aInfo,oGridSource,0,"C"), но не для свойств, а для методов. PEMSTATUS имеет поведение полностью аналогичное AMEMBERS. Единственный способ решения который я вообще вижу, это пробежаться по списку методов AMEMBERS(aInfo,oGridSource,1,"C") и проверить их на предмет возвращения пустой строки из oGridSource.ReadMethod("тра-та-та"). Это работает - ReadMethod, в отличие от AMEMBERS и PEMSTATUS не волнует что там было в родителях, если метод в потомке никак не был перегружен - то он вернет пустую строку. Вроде бы все замечательно, но(!) - ReadMethod работает только в дизайн-тайме, а мне надо получить эту инфу в ран-тайме. Какие будут идеи? Отредактировано (17.02.05 16:46) ------------------ |
Re: Runtime. Список измененных методов | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
Не проверял, по хелпу
9-ка Цитата: 7-ка Цитата: Ещё если форма Scx , то выгрузить как таблицу и посмотреть SCX.Metods и разобрать строку на предмет вхождения метода. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Runtime. Список измененных методов | |
---|---|
Aijik Автор Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
PaulWist писал(а):
Цитата: 0 работает и в восьмерке для методов, хотя и не документировано. 0 как я уже говорил не подходит, т.к. считает измененнием просто унаследованный код Цитата:Да, наверное, но слишком уж через ж... получается , к тому же не будет работать для невизуальных решений |
Re: Runtime. Список измененных методов | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
Цитата: Те BaseClass -> FirstChidren -> SecondChildren, и FirstChidren имеет какой-то код в SomeMethod, а мы используем обьект созданный на основе SecondChildren, кот не имеет кода в SomeMethod то PEMSTATUS( ) вернет истину, так что ли. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Runtime. Список измененных методов | |
---|---|
Aijik Автор Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
PaulWist писал(а):
Цитата:Да, к сожалению |
Re: Runtime. Список измененных методов | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
Игорь, слушай, конечно задача описана классически-утилитарно, но какова конечная цель, например построение своего форм-дизайнера, м.б. что-то другое взять за точку отсчета.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Runtime. Список измененных методов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Aijik!
Дабы жизнь совсем мёдом не казалась, могу сказать что SYS(1269), PEMSTATUS() и AMEMBERS() работают весьма разно для vcx и prg классов! GETPEM() НЕ работает для prg (по крайней мере в части методов) даже в дизайнтайме (что понятно, но не оправдывает вводящую в заблуждение статью хелпа). ReadMethod это естественно нехорошее решение, он и в дизайн-тайм странновато себя ведёт для живых объектов. А вообще было-бы полезно узнать что именно ты хочешь сделать - зачем тебе нужна эта информация... Скажем часть проблем решается посредством введения дополнительных свойств в класс - показывающих есть ли в некотором методе код или нет, но я вот так с ходу не могу придумать где бы это могло быть применимо... ------------------ WBR, Igor |
Re: Runtime. Список измененных методов | |
---|---|
Aijik Автор Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
Привет!
PaulWist писал(а): Цитата:Igor Korolyov писал(а): Цитата: Ну дык эта.... Все как всегда проще Причиной изврата, является, как обычно, лень (ну та, которая двигатель прогресса ;)) Влом было класс подменять однотипным контролам, сделал измененный экземпляр и хотел прибиндить его методы к существующим. Ну, такое своебразное "хакерство по-быстрому". Для этого, собственно и нужен был список измененнных методов у нового, чтобы циклом по списку пройтись, да все прибиндить. Ну, в общем, красивого и быстрого решения хотелось - AMEMBERS и вперед. Не тут-то было... В общем, как и положено, классы заменил в результате Цитата:Интересно. Можно подробнее? Цитата:Другими словами GETPEM хорошее? "Какие ващи дакасатийльства?" (с) Вопрос на засыпку миллиционеру Шварценеггеру в к/ф "Красная жара" Отредактировано (21.02.05 08:41) ------------------ |
Re: Runtime. Список измененных методов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Aijik!
Цитата:Дык посмотри сам как он работает, и когда НЕ работает Всяко проще чем расписывать в деталях... Цитата:Нет конечно! Я не это имел в виду! Они равноценно плохие И применять их не нужно. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |