Вниз
Скачать: CL | DM;

RTTI + DLL   Найти похожие ветки 

← →
ASH ©   (2005-02-21 15:21) [0]

Добрый день. У меня возникла проблема с определением типа объекта (A is TSomeClass), указатель которого передается в DLL. С чем это может быть связано? (ShareMem прописан)


← →
Skier ©   (2005-02-21 15:24) [1]


> ShareMem прописан

первым прописан ?


← →
Юрий Зотов ©   (2005-02-21 15:29) [2]

ShareMem тут ни при чем. Если Exe и DLL скомпилированы независимо, то один и тот же класс в каждом из них - это два разных класса, каждый со своей VMT. Поэтому IS и не проходит.

Может помочь компиляция Exe и DLL с run-time пакетами.


← →
Семен Сорокин ©   (2005-02-21 15:38) [3]

2ASH
как вариант можно попробовать использовать интерфейсы.


← →
ASH ©   (2005-02-21 15:39) [4]

Ну конечно же первым :-)
Спасибо, Юрий. А что если использовать пакеты, то VMT пакета будет общим для EXE и DLL?


← →
Юрий Зотов ©   (2005-02-21 15:42) [5]

> ASH ©   (21.02.05 15:39) [4]

Я очень на это надеюсь...
:о)

А чего бы VMT не быть общей, если она останется в коде пакета, но не войдет ни в код Exe, ни в код DLL?


← →
ASH ©   (2005-02-21 15:42) [6]

>Семен Сорокин
или через ком-объекты :-) спасибо


← →
ASH ©   (2005-02-21 15:44) [7]

>Юрий Зотов
Любопытно, ни когда не думал об этом, огромное спасибо! Это то, что нада :-)


← →
ASH ©   (2005-02-21 15:46) [8]

Вот еще вопрос, почему в главном меню окна не работают горячие клавиши, если это окно запускается из DLL? (оно к томуже модальное)


← →
Семен Сорокин ©   (2005-02-21 15:54) [9]


> ASH ©   (21.02.05 15:46) [8]
> Вот еще вопрос, почему в главном меню окна не работают горячие
> клавиши, если это окно запускается из DLL? (оно к томуже
> модальное)

Application.Handle подменяешь?


← →
Юрий Зотов ©   (2005-02-21 15:54) [10]

> ASH ©   (21.02.05 15:46) [8]

Скорее всего, потому, что независимо скомпилированная DLL имеет еще и свой собственный Application (а также Screen, Session и прочие глобальные объекты).


← →
ASH ©   (2005-02-21 15:57) [11]

Нет не подменяю, иначе модальное окно не получается модальным, как быть?


← →
ASH ©   (2005-02-21 15:58) [12]

Нет не подменяю, иначе модальное окно не получается модальным, как быть?


← →
ASH ©   (2005-02-21 15:59) [13]

Нет не подменяю, иначе модальное окно не получается модальным, как быть?


← →
ASH ©   (2005-02-21 16:00) [14]

Нет не подменяю, иначе модальное окно не получается модальным, как быть?


← →
Vlad_ri   (2005-02-21 16:13) [15]

А это тоже не проходит?

if xxx.ClassName = "TSomeClass" then
...


← →
Семен Сорокин ©   (2005-02-21 16:18) [16]


> ASH ©   (21.02.05 15:57) [11]
> Нет не подменяю, иначе модальное окно не получается модальным,
> как быть?


Почему? Вот код:
Procedure ShowDLLForm(AppHandle: HWND); stdcall;
begin
 if AppHandle = 0 Then
  AppHandle := GetActiveWindow;
 Application.Handle := AppHandle;
 try
  with TDLLForm.Create(Application) do
   try
    ShowModal
   finally
    Free
   end
 except
  on E: Exception do
   Application.HandleException(E)
 end;
 Application.Handle := 0;
end;


← →
ASH ©   (2005-02-21 16:32) [17]

>Vlad_ri
Да это помогает, я так сначала и дела - просто меня интересовала суть баги :-)

>Семен Сорокин
Спасибо, нада попробовать



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
6-1104171339
KarpUha
2004-12-27 21:15
2005.03.06
Ответ от модема


3-1107796391
MakedoneZ
2005-02-07 20:13
2005.03.06
TDBGrid и Table


1-1108562583
Manfred8
2005-02-16 17:03
2005.03.06
Шахматка и как ее сотворить?


1-1108975451
snake_r
2005-02-21 11:44
2005.03.06
Закрытие формы


14-1108257585
VID
2005-02-13 04:19
2005.03.06
Небольшая проблемка с XP




   Наверх