Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 17:14   #1
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию Передать методы класса из dll

Ну суть вопроса в заголовке
Есть dll где есть класс
Код:
 type
  TNewClass = class
   a: integer;
   public
    function Get: integer;
  end;
Помогите написать модуль, для того чтобы использовать этот класс в сторонней программе (желательно без динамичной загрузки dll) со всеми методами и переменными.
alexprey вне форума Ответить с цитированием
Старый 10.11.2010, 17:26   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. У .dll есть события загрузки в целевой процесс, и выгрузки
2. Singleton - патерн реализации доступа к классу как к одному статическому объекту. Тобишь, что то вроде
Код:
TNewClass = class
....
private
   FInstance: TNewClass;
   class function GetInstance: TNewClass;
public
   property Instance: TNewClass get GetInstance;

...


class function TNewClass.GetInstance: TNewClass;
begin
  if not FInstance is TNewClass then 
    FInstance := TNewClass.Create;
  result := FInstance ;
end;
3. Объявите экспортируемые функции, в которых возвращайте просто @TNewClass.Instance.Get адрес функции, нужной вам.
4. При выгрузке вызывайте TNewClass.Instance.Free;

p.s. вы уж простите, дельфи давно не использовал, я думаю описал все что надо, подправите уж сами мелочи.
BOBAH13 вне форума Ответить с цитированием
Старый 11.11.2010, 16:07   #3
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

BOBAH13, нет такое не подходит. Это доступ к одному только объекту
Цитата:
Сообщение от wikipedia
у класса есть только один экземпляр
Мне такое не подходит. Хотелось чтобы можно было работать как будто этот класс описан в модуле
alexprey вне форума Ответить с цитированием
Старый 11.11.2010, 16:11   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

помоему в данном случае нужны интерфейсы.
ибо RTTI у DLL своя.
вообще для такого есть пакеты.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в timeSetEvent CALLBACK передать функцию класса ? Teksa Общие вопросы C/C++ 0 23.07.2010 11:21
Методы класса Date. Sakura_Vamp Помощь студентам 1 30.05.2010 18:41
C++, методы строкового класса Akord Помощь студентам 0 07.12.2009 17:16
массив указателей на методы класса? cout Общие вопросы C/C++ 2 08.05.2008 09:43
Классы и методы класса Exploit Помощь студентам 9 17.12.2006 18:21