Даннов модул в DLL

3 отговора 208 прегледа
#1

Даннов модул в DLL

Мога ли да сложа DataModule в DLL и да са ми достъпни компонентите в него от други модули.Компонентите имам в предвид компонентите за достъп до данните, TQuery, DataSource.

Отговор
в отговор на Vasil #2

Re: Даннов модул в DLL

Имахме в университета един даскал по икономика, който обичаше да казва, че всеки въпрос има един и същ отговор - "зависи" :)
Та и моя отговор е такъв - зависи. По принцип - да, можеш да имаш data module в dll. Но май въпросът ти е малко по-друг. Може и да греша, но ти май искаш да можеш да си му ползваш компонентите в него design time, т.е. да си слагаш datasource-ите по DataSource пропъртитата на контролите и т.н. Прав ли съм? Ако да - тогава отговора ще е по-скоро "не". Или поне не по този начин.
Ако отделиш data module, form и т.н. в dll (ще те посъветвам обаче да си го направиш в пакет, т.е. bpl, освен ако нямаш основателна причина да е dll) по време на компилация няма да имаш информация за това какво има вътре в него. Разбирай няма да можеш да напишеш нещо от сорта на MyDataModule.qReport.Open, защото никъде в твоя сорс няма декларация на TMyDataModule и компилатора представа си няма, че в него може да има qReport.
Можеш да си стандартизираш някакъв интерфейс към модула или например да си търсиш компонентите по име или по нещо друго runtime, но това едва ли е най-удобният начин.
За такива неща си има технологии, но там нещата са малко по-сложни. Ако те интересува - почети малко за COM, DCOM, Midas...

Отговор
в отговор на andrew_nikoloff #3

Re: Даннов модул в DLL

Може и да греша, но ти май искаш да можеш да си му ползваш компонентите в него design time, т.е. да си слагаш datasource-ите по DataSource пропъртитата на контролите и т.н. Прав ли съм?

Да прав си.Това само със COM/DCOM ли може да се направи?До колкото знам MIDAS технологията също използва COM/DCOM.

Отговор
в отговор на vasil #4

Re: Даннов модул в DLL

Не се сещам за друго в момента. Задачата не е тривиална. Удобството на DCOM-а в случая е, че като си импортираш tlb-то имаш декларацията на модула.
Ако ползваш Delphi 2005 можеш да видиш за remoting-а.

Отговор