![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
Ситуация :
Мое приложение будет оперировать плагинами - т.е. множество ДЛЛ с набором разных функций. О функциях из ДЛЛ я буду знать тока имя и количество параметров (все параметры - integer) отдельной функции. Вызов не представляет проблем: (Это черновой вариант)
Проблему вызывает то, что у разных функций - разное количество параметров. Эти параметры я храню в TList. Когда организую цикл по TList-у, то компилятор в стэк пишет еще что-то (свои какие-то заморочки) в результате в стэке - каша. Как проще решить проблему? Заранее спасибо. |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Не проще воспользоваться стандартным способом?
-------------------- |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Покажи
Имхо передают кол-во параметров -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
2 Демо
Ты предлагаешь сделать типа такого ?
Согласись - некрасиво. 2 Romikgy К сожалению, щас показать не могу - исходники дома. В дебагере (который по Ctrl+Alt+C ) я явно видел манипуляции со стэком. Ты имеешь в ввиду что если организовать цикл, скажем, по массиву, то операций со стэком не будет? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Имхо так будет правильнее -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Тогда так:
Добавлено @ 12:32 Есть другой способ работы с плагинами. У плагина есть функции Load и Unload. Вся остальная работа делается через WM_COPYDATA. Передаешь код действия и данные. А реализованы они в плагине или нет - не важно. Используется соответственно только то, что реализовано, остальное опускается по дефолту. |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Не соглашусь. У тебя всегда известно максимальное количество параметров. И выглядеть это будет не как 20 разных функций, а как одна, но с максимальным корличеством параметров, все которые могут быть опущены. В результате ты в вызванной функции всегда можешь опрежделить их количество и реагировать соответствующим образом. Добавлено @ 14:12 Вместо всех функций, которые ты написал, достаточно одной:
-------------------- |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Демо, одно единственное "но" когда среди параметров потребуется передать -1 !?
![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Для подобного метода выбирается диапазон, который не используется для передачи параметров. Если такой диапазон подобрать невозможно, то первым параметром передается количество значимых параметров, затем уже сами параметры. -------------------- |
|||
|
||||
Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
Спасибо всем откликнувшимся.
Реализовал таки все на ассеблере. Но ваши ответы натолкнули меня на хорошие мысли. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |