Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вызов метода интерфейса из ассемблера


Автор: Gershkovich 28.2.2010, 14:24
Всем привет!

Вопрос немного не про Delphi. Вернее наполовину про Delphi.
Но вдруг...

Делаю плагин для AIMP2. На Delphi плагин получаеццо больше 300к.
Если вставлю окно конфигурации, то все 600к.
Хочу переделать плагин на ассемблере (FASM) . Разница в размере DLL-ек - 100 раз (!)

Но проблема в следующем:

AIMP предоставляет доступ к своим функциям через контроллер IAIMP2Controller
(ссылка на него передается в плагин при инициализации плагина)

IAIMP2Controller объявлен как интерфейс:
Код
IAIMP2Controller = interface
  function IsUnicodeVersion: Boolean; stdcall; // Must be True
  function AIMP_CallBack_Set(dwCBType: DWORD; Proc: Pointer; User: DWORD): Boolean; stdcall;
  ...
  ...
  ...
end;


Вопрос - имея ссылку на интерфейс, как вызвать нужный метод из ассемблера ?

Заранее спасибо.
ЗЫ: запостил этот вопрос на ассеблерном форуме:  http://wasm.ru/forum/viewtopic.php?id=36569

Автор: CodeMonkey 28.2.2010, 17:23
Правильный ответ: вместо того, чтобы страдать хернёй, займитесь чем-нибудь полезным.

Не очень правильный ответ: что мешает написать плагин на Delphi без VCL? Получится примерно то же.

Совсем неправильный ответ: вставьте вызов интерфейса, да посмотрите на сгенерированный компилятором код.

Автор: Rrader 28.2.2010, 17:24
В папке %FASMDIR%\EXAMPLES\USECOM есть пример работы с интерфейсом ITaskBarList. Можно сделать по аналогии.

Автор: Frees 28.2.2010, 17:36
какой смысл экономить килобайты если размер оперативки исчисляется гигабайтами?

Автор: Gershkovich 28.2.2010, 18:18
Цитата(CodeMonkey @  28.2.2010,  17:23 Найти цитируемый пост)
Не очень правильный ответ: что мешает написать плагин на Delphi без VCL? Получится примерно то же.

Действительно! Убрал из секции uses ненужные юниты - размер сократилсо до 16К.


Цитата(CodeMonkey @  28.2.2010,  17:23 Найти цитируемый пост)
Совсем неправильный ответ: вставьте вызов интерфейса, да посмотрите на сгенерированный компилятором код. 

Я предлагаю Вам вставить вызов интерфейса и посмотреть  в отладчике. Я обещаю - Вы <removed by moderator>.


Rrader,  воистину RTFM! Я не предполагал что FASM предоставляет такую возможность потомучто FASM какбэ и под линукс может. Поэтому и  не допускал такой возможности. Все просто на самом деле.


Цитата(Frees @  28.2.2010,  17:36 Найти цитируемый пост)
какой смысл экономить килобайты если размер оперативки исчисляется гигабайтами? 

Смысл в том, чтобы писать грамотно, красиво и рационально - и в этом есть прелесть программирования. Удовлетворение тщеславия, если хотите

СПАСИБО ВСЕМ ОТКЛИКНУВШИМСЯ!
Вы мне действительно помогли


M
Rrader
Gershkovich, полегче с выражениями

Автор: Gershkovich 28.2.2010, 18:38
Rrader,  почему Вы не сделали предупреждение CodeMonkey ??????
Или выражение "страдать хернёй" является приемлемым ?
Будьте, пожалуйста, последовательным, Rrader!

Автор: Rrader 28.2.2010, 18:45
Gershkovich, "херня" <> taboo slang, а у вас был такой, пусть и немного прикрытый. Я сделал вам замечание, никаких предупреждений. Надеюсь, отнесетесь с пониманием. Тема закрыта.

Автор: bems 1.3.2010, 18:07
Все дело в том, что хер это буква старого алфавита. Когда говорят "хер" вместо другого слова на ту же букву, то это тоже самое, что сказать "страдать хэ".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)