Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт объектом функций из DLL, Проблема с вызовом импортируемой ф-ии 
:(
    Опции темы
fse
Дата 22.10.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.9.2007
Где: г. Рязань

Репутация: 1
Всего: 1



Всем привет. Столкнулся вот с такой проблемой...
Описываю класс так, например:

Код

TMyObject = class(TObject)
private
  FMyProc: function(A, B: Integer): Integer; stdcall;
end;


В конструкторе класса загружаю собственный для объекта экземпляр DLL-ки и делаю @FMyProc := GetProcAddress

Работает, но иногда глючит вызов MyProc. Почему - думаю, что компилер вызывает этот метод согласно объектному вызову процедуры, а не статическому. Т.к. если FMyProc описать, как глобальную переменную - то всё работает как часы.
Если так, то попробовал описать
Код

type
  TMyProc = function(A, B: Integer): Integer; stdcall; // т.е. не function of object, а так.
  TMyObject = class(TObject)
  private
    FMyProc: TMyProc;
  end;


По идее, должно работать, т.к. FMyProc хранит просто указатель на функцию и компилер должен толково понять всё! Ан нет!

Как вариант, можно сделать то же самое в глобальных или локальных переменных, тогда будет всё работать, но не совсем такой подход катит...

Надеюсь, понятно объяснил. Как можно ссылки на функции из DLL-ки хранить именно полями объекта?  smile

Добавлено через 12 минут и 44 секунды
Блин, люди, сорри, пост можно удалить нафиг! Нашёл косяк  smile 
Вообще не в этом. А это работает, а я уж было надумал тут тысячу причин!  smile 
Всем спасибо!

Добавлено через 13 минут и 7 секунд
Блин, люди, сорри, пост можно удалить нафиг! Нашёл косяк  smile 
Вообще не в этом. А это работает, а я уж было надумал тут тысячу причин!  smile 
Всем спасибо!
PM MAIL   Вверх
Alexeis
Дата 22.10.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(fse @  22.10.2007,  10:37 Найти цитируемый пост)
Как вариант, можно сделать то же самое в глобальных или локальных переменных, тогда будет всё работать, но не совсем такой подход катит...

  Так будет работать или работает? Советую сначала проверить именно этот вариант.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0751 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.