Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c