Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Каким образом получить доступ объекту DLL ки к объекту главного п   Найти похожие ветки 

 
GrowlmonizeR   (2004-06-20 11:06) [0]

Приветствую Вас всех! У меня имеет место быть следующий вопрос. Заранее извиняюсь за его корявую постановку. В нашей команде программистов, я пишу на PL/SQL, и к дельфям редко прикладываюсь. Вопрос в следующем: Есть главное приложение, которое сканирует на наличие DLL"ок директорию и подключает их. Каким образом получить доступ объекту DLL"ки к объекту главного приложения, а точнее к его свойствам.


 
DrPass ©   (2004-06-20 12:07) [1]

Передать указатель на этот объект в DLL. Не забыть про модуль sharemem.


 
jack128 ©   (2004-06-20 12:30) [2]


> Передать указатель на этот объект в DLL. Не забыть про модуль
> sharemem.

это не есть гуд по двум причинам
а) дубляж кода в dll и в основном приложении
б) накладываются некоторые ограничения на объект (не возможность использования операторов is/as и тд)

есть два возможных варианта решения проблемы
1) вынести объект в пакет и соответственно компилировать dll и exe с рантайм пакетами
2) объявить interface, описывающий интерфейс (уж извени за карявость фразы :-)) объекта и передовать в длл этот интерфейс.

Хотя если объект  маленький и не сложный, то можно и способом DrPass"a воспользоваться..


 
default ©   (2004-06-20 13:40) [3]

jack128 ©   (20.06.04 12:30) [2]
пояcни пункт a) (


 
jack128 ©   (2004-06-20 13:54) [4]


> jack128 ©   (20.06.04 12:30) [2]
> пояcни пункт a) (

unit uMyTestClass

interface

type
 TTest = class(TObject)
 public
   procedure SameProcedure();
   ...
 end;

implementation

procedure TTest.SameProcedure;
begin
...
end  

для того чтобы использовать класс TTest в Dll - нужно подключить модуль uTestClass, вот и получается, что у нас код этого модуля Магнезия и в EXE(в котором мы, собственно и реализуем функциональность класса) и в DLL(тут нам посути нужен только интерфейс класса).


 
jack128 ©   (2004-06-20 13:55) [5]


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


 
default ©   (2004-06-20 14:01) [6]

jack128 ©   (20.06.04 13:54) [4]
ааа...а не в курсе на счёт дублирования Application в EXE и в DLL?зачем это понадобилось...


 
jack128 ©   (2004-06-20 14:31) [7]


> а не в курсе на счёт дублирования Application в EXE и в
> DLL?

Нет, не в курсе. Сам я не часто c DLL дело имею, а если и имею, то без VCL.


 
evvcom ©   (2004-06-20 19:32) [8]


> к объекту главного приложения, а точнее к его свойствам

А зачем собственно? С объектами exe пусть сам exe и работает. То же касается и dll. А уж если что из самой dll надо поменять, так или посылать сообщения, или через интерфейсы (COM, OLE, ActiveX). Меньше проблем будет.



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

Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
1-1087889457
Apolon
2004-06-22 11:30
2004.07.04
MDI


14-1086964065
Delphin
2004-06-11 18:27
2004.07.04
Красивый интерфейс


1-1087538164
AngelSAI
2004-06-18 09:56
2004.07.04
Работа с рисунками


8-1082045857
Gerz
2004-04-15 20:17
2004.07.04
Изображение на Scrollbox.canvas мерцает и пропадает по краям.


1-1087342300
Dmitry
2004-06-16 03:31
2004.07.04
Как правильно установить DelphiX (интерфейс к DirectX) в Delphi 7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский