| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Узнать количество параметров процедуры/функции |
| Автор: lukas 19.11.2007, 20:40 | ||
| Вообщем задача такая, зная только укатель (Pointer) на функцию/процедуру или метод узнать (хотябы) количество параметров... ну что-то типо этого....
|
| Автор: Alexeis 19.11.2007, 21:32 |
| По моему, такое возможно только для Activex/COM. |
| Автор: lukas 19.11.2007, 21:35 |
| ну почему же... как работает Pascal Script, безусловно не без этого... что ж... наверно придется кавырять его.... |
| Автор: Alexeis 19.11.2007, 21:58 |
Так он же в себе сорцы хранит, а экзешник нет. Описание параметров есть в тлбшках, сборках дотнета. |
| Автор: lukas 19.11.2007, 22:41 |
| так а по подробнее об этом... Добавлено через 6 минут и 37 секунд к тому же я не представляю как хранить функции и процедуры с разными типами параметров и с разным их количеством... чтобы их еще при этом можно было вызывать... |
| Автор: EvilsInterrupt 20.11.2007, 10:09 |
| lukas, Все куда проще ;) Когда ты пишешь код, то уже на стадии компиляции известно, сколько будет аргументов в конкретном месте кода! Даже при этом: if a= b then // вызовем Функ1 с двумя аргументами else вызовем Функ1 с одним аргументом Даже в этом случае компиллеру известно, сколько аргументов надо в конкретном месте, а раз знает, то и вставляет такой код, где передается в стек столько параметров сколько надо и переходит работать по указанному адресу, опять же он знает скоко аргументов, значит знает где нужная ф-ция лежит! Но когда дело касается классов и виртуальных, динамических методов. А также автоматных интерфейсов в технологии COM, тут немного по сложнее. Тут вычисляется адрес нужного метода и происходит вызов. Вывод, кол-во параметров можно узнать, только если изучить схему вызова, т.е. как все дело передается в стек. За одно будешь знать соглашение о вызове. ;) ЗЫ: ИМХО, я могу ошибаться, особо наверу не принимайте, а лучше перепроверьте |
| Автор: lukas 20.11.2007, 17:15 | ||
ну вообщем... как в Паскаль скрипте мы добавляем функции и процедуры... что то типа этого...
EvilsInterrupt, так я понимаю что кол-во параметров вычисляется компилятором... но как обратиться к функции (допустим)... нужно придумать какой-то универсальный процедурный тип... только как?... хз. |
| Автор: Alexeis 20.11.2007, 17:21 |
| lukas, сильно смахивает на паттерн "стратегия". Мож не мучиться и сделать как полагается при помощи ООП. |
| Автор: lukas 20.11.2007, 17:28 |
| Да и в правду... наверно игра не стоит свеч... если найду способ отпишусь... |