![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| avet |
|
|||
|
Unregistered |
не подскажете,как в Delphi(если там вообще существует такая возможность) вызвать процедуру, имя которой записано в переменной? такая проблема встречается уже не первый раз!
|
|||
|
||||
| acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Если функция вызываемая находится в DLL, то можно (GetProcAddress). Для случая если в самой программе, не знаю
|
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Это извращение возникает из-за тесного общения с скриптовыми (интерпритируемыми) языками. На самом деле это практически никогда не нужно. Тем не менее способы есть. Если это методы объекта, тогда можно воспользоваться RTTI (у нас, вроде, в FAQ это есть), однако если это обыкновенные функции, то можно, как и предложил acp, объявить их в секции экспорта а потом воспользоваться GetProcAddress. -------------------- Волны гасят ветер... |
|||
|
||||
| MovAx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.3.2003 Где: Москва Репутация: нет Всего: нет |
Вроде как avet ничего про Dll не говорил, тогда отвечаю примером
type TMyProc = procedure ( Param:integer ); ... procedure MyProc(Param:integer); begin ... end; ... var MyProcVar:TMyProc; i:integer; begin MyProcVar:=MyProc; MyProcVar(i); end. |
|||
|
||||
| acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Пример некорректен. Т.к. это не совсем то, точнее совсем не то
|
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Это можно сделать и в exe, а не только в dll. -------------------- Волны гасят ветер... |
|||
|
||||
| MovAx |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.3.2003 Где: Москва Репутация: нет Всего: нет |
Ты так уверен, как будто сам топик создавал. |
||||
|
|||||
| acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
В первой мессаге топика условие задачи определено достаточно конкретно. Т.е. указано, что в переменной хранится именно имя - т.е. строковая переменнная и т.п., но никак не указатель или что-то ещё.
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
У нас в FAQ есть пример как это делается
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| MovAx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.3.2003 Где: Москва Репутация: нет Всего: нет |
А помоему это все чушь и мой топик (не этот)
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Внесём ясность - если открыть exe файл любым просмотрщиком и поискать просто название процедуры - её не будет, следовательно в exe названия процедуры нат и её найти нельзя. А вот если это будет Procedure of Object, т.е. метод класса 0 - то очень даже можно - см. FAQ
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "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. |