Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1106387185
vvvaaa
2005-01-22 12:46
2005.03.06
Диалог из ресурса


1-1108834357
NightStranger
2005-02-19 20:32
2005.03.06
Сохранение HTML


3-1107349942
Топпер
2005-02-02 16:12
2005.03.06
FastReport нумерация строк данных


1-1108753570
Ji
2005-02-18 22:06
2005.03.06
Магнитные бури???


3-1107425196
КаПиБаРа
2005-02-03 13:06
2005.03.06
Выделение строк в DBGrid с помощью ChackBox ов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский