Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

RTTI + DLL [D5]


ASH ©   (2005-02-21 15:21:00) 

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


ASH   (2005-02-21 16:32:00) [1]

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

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


Семен Сорокин   (2005-02-21 16:18:00) [2]


> 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;


Vlad_ri   (2005-02-21 16:13:00) [3]

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

if xxx.ClassName = 'TSomeClass' then
...


ASH   (2005-02-21 16:00:00) [4]

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


ASH   (2005-02-21 15:59:00) [5]

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


ASH   (2005-02-21 15:58:00) [6]

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


ASH   (2005-02-21 15:57:00) [7]

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


Семен Сорокин   (2005-02-21 15:54:00) [8]


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

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


Юрий Зотов   (2005-02-21 15:54:00) [9]

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

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


ASH   (2005-02-21 15:46:00) [10]

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


ASH   (2005-02-21 15:44:00) [11]

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


ASH   (2005-02-21 15:42:00) [12]

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


Юрий Зотов   (2005-02-21 15:42:00) [13]

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

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

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


ASH   (2005-02-21 15:39:00) [14]

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


Семен Сорокин   (2005-02-21 15:38:00) [15]

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


Юрий Зотов   (2005-02-21 15:29:00) [16]

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

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


Skier   (2005-02-21 15:24:00) [17]


> ShareMem прописан

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо