![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
Вообщем задача такая, зная только укатель (Pointer) на функцию/процедуру или метод узнать (хотябы) количество параметров...
ну что-то типо этого....
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
По моему, такое возможно только для Activex/COM.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
ну почему же... как работает Pascal Script, безусловно не без этого... что ж... наверно придется кавырять его....
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Так он же в себе сорцы хранит, а экзешник нет. Описание параметров есть в тлбшках, сборках дотнета. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
так а по подробнее об этом...
Добавлено через 6 минут и 37 секунд к тому же я не представляю как хранить функции и процедуры с разными типами параметров и с разным их количеством... чтобы их еще при этом можно было вызывать... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
lukas,
Все куда проще ;) Когда ты пишешь код, то уже на стадии компиляции известно, сколько будет аргументов в конкретном месте кода! Даже при этом: if a= b then // вызовем Функ1 с двумя аргументами else вызовем Функ1 с одним аргументом Даже в этом случае компиллеру известно, сколько аргументов надо в конкретном месте, а раз знает, то и вставляет такой код, где передается в стек столько параметров сколько надо и переходит работать по указанному адресу, опять же он знает скоко аргументов, значит знает где нужная ф-ция лежит! Но когда дело касается классов и виртуальных, динамических методов. А также автоматных интерфейсов в технологии COM, тут немного по сложнее. Тут вычисляется адрес нужного метода и происходит вызов. Вывод, кол-во параметров можно узнать, только если изучить схему вызова, т.е. как все дело передается в стек. За одно будешь знать соглашение о вызове. ;) ЗЫ: ИМХО, я могу ошибаться, особо наверу не принимайте, а лучше перепроверьте |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
ну вообщем... как в Паскаль скрипте мы добавляем функции и процедуры... что то типа этого...
EvilsInterrupt, так я понимаю что кол-во параметров вычисляется компилятором... но как обратиться к функции (допустим)... нужно придумать какой-то универсальный процедурный тип... только как?... хз. -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
lukas, сильно смахивает на паттерн "стратегия". Мож не мучиться и сделать как полагается при помощи ООП.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
Да и в правду... наверно игра не стоит свеч... если найду способ отпишусь...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |