![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| jcyber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 2.4.2009 Репутация: нет Всего: нет |
Уважаемые, вопрос следуйщего характера.
Есть ли в Дельфи возможность динамического вызова метода, имея только указатель на него ( без использования переменной процедурного типа, что то вроде
Попытный вопрос: можно ли получить список методов в DLL ( их имен ); динамически конечно? Заранее спасибо. P.S. Имеется ввиду аналог технологии для Delphi, которая есть в Java под названием Reflection. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| jcyber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 2.4.2009 Репутация: нет Всего: нет |
Похоже... но тестить буду вечером, после работы...
За линк спасибо |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| jcyber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 2.4.2009 Репутация: нет Всего: нет |
bems, не совсем понял, что Вы хотите сказать, если можно конкретизируйте Вашу мысль.
Быть может я не совсем корректно сформулировал вопрос, но я говорил о вызове метода. Т. е. я заранее не знаю, что это: процедура или функция, сколько в нем входных и выходных параметров и какие у них типы ). |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Конкретизирую:
1) метод это процедура или функция принадлежащая объекту. В дельфи из длл можно вызывать только процедуры и функции, не принадлежащие объекту (т.е. не методы) 2) не зная сигнатуры вызова (количества и типов параметров и типа возвращаемого значения, либо факта его отсутствия) нельзя корректно вызвать процедуру или функцию. Можно тупо передать управление на ее начало, но в результате получим или исключение, или непредсказуемое поведение программы -------------------- Обижено школьников: 8 |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Да, но DLL может экспортировать обычную функцию, возвращающую объект. А методы этого объекта будут лежать в DLL.
А если конкретно МЫ не знаем сигнатуры - то её может знать RTTI самого объекта. Вот задачу вызова мы на него и возложим. Проблема только в том, что нам (со стороны exe) всё равно необходимо иметь заголовочник класса. Хотя... надо подумать, нет ли тут возможности передавать просто TObject и воспользоваться RTTI в DLL. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| jcyber |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 2.4.2009 Репутация: нет Всего: нет |
Печально и очень неудобно...
ОК, спасибо за мнение |
||||
|
|||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Добавлено через 1 минуту и 36 секунд jcyber, длл твоя? если да - сюда http://gunsmoker.blogspot.com/2008/12/1.html -------------------- Обижено школьников: 8 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |