Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Plug-in   Найти похожие ветки 

 
de.   (2007-11-15 10:49) [0]

Уважаемые мастера!
Не могу придумать “фокус!”…

Фокус заключается в следующем:
Есть несколько проектов которые используют формы справочников, для редактирования НД. Так форма справочника была написана в одном приложении, и помере написания других приложений она просто копировалась, из одной программы в другую. Получается что “одна и таже” форма используется в различных приложениях.
Мной было принято написать плагин (dll), и разместить в нем эту самую форму, чтобы ее могли вызывать различные приложения. Тут думаю понятно…
Так вот, помимо этого я бы хотел, добавить в эту dll, функцию которая бы возвращала информацию о плагине, т.е. наименование, версию и т.д., примерно как в статье Delphi World (Использование DLL в качестве Plug-in).
Сама функция:

// получение информации о плагине
function GetModuleInfo:TModuleInfo;stdcall;
var
 Buffer:array [byte] of char;
begin
 with Result do begin
   Name:="Отображение цифровых данных";
   Kind:=mkDigital;
   if GetModuleFileName(hInstance,@Buffer,SizeOf(Buffer)-1)>0 then
     Path:=ExtractFilePath(StrPas(Buffer));
 end;
end;

// Функция возвращает информацию о модуле. В данном
// случае это цифровое отображение, путь и тип модуля.


Но эта функция посуте возвращает тип TModuleInfo, которого описания я не нашол, но осмелюсь предположить, что он имеет вид:

Type
 TModuleInfo = record
   Name: PChar;
   ...
   Path: PChar;
 End;


На этом о плагине все!

Теперь его вызов:
Итак:
В приложении мы объявляем экспортируемые процедуры и функции из библиотеки:

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   hDll: THandle;
   …
   GetModuleInfo: function: TModuleInfo; stdcall;
   …
 end;

 
Думаю понятно!
Так вот дальше:
В этом самом объявлении тоже используется тип TModuleInfo, следовательно, нам необходимо тоже объявить точно такой же тип как и в dll выше”:

Type
 TModuleInfo = record
   Name: PChar;
   ...
   Path: PChar;
 End;


Думаю расписал подробно, чтобы суть была понятна целиком, всмысле полностью ;-)

ВОПРОС:

Нельзя ли гденить в dll, или программе, использовать технологию интерфейсов, дабы не объявлять каждый раз тип

TModule в dll или программе…?


 
oldman ©   (2007-11-15 11:35) [1]

Если добавляешь в dll форму справочников, добавь туда и форму "About"


 
de.   (2007-11-15 11:37) [2]


> oldman ©   (15.11.07 11:35) [1]

Непонял...


 
oldman ©   (2007-11-15 11:39) [3]


> de.   (15.11.07 11:37) [2]


На форме справочников кнопка about, которая вызывает форму, на которой инфа о версии и т.д.


 
de.   (2007-11-15 11:45) [4]

Не смысл такой, что будет сервер поекта, на котором будут вылаживатся обновления. Потом когда пользователь обновляется, при запуске программы например выдается сообщение мол так и так обноружина новая ворсия формы справочников ну или чтото вроде этого... :-)

Еще в принципе можно использовать указатель, но чем это может помочь еще не придумал... :-))

Type
PModuleInfo = ^TModuleInfo;
TModuleInfo = record
  Name: PChar;
  ...
  Path: PChar;
End;


 
Сергей М. ©   (2007-11-15 14:36) [5]


> вылаживатся


Велик и могучее русский языка !


> технологию интерфейсов


Накой ляд она сдалась ?

Реализуй свои плагины в bpl и собирай все свои проекты с ран-тайм пакетами - и всех делов)


 
de.   (2007-11-15 17:05) [6]


> Сергей М. ©   (15.11.07 14:36) [5]


> Велик и могучее русский языка !

Вылиживаться :-)


> Накой ляд она сдалась ?


А по каким пречинам bpl лутше.?


 
oldman ©   (2007-11-15 17:07) [7]


> обноружина новая ворсия


Еще как велик и могуч...
Только не говори, что по клавишам промахнулся!


 
Сергей М. ©   (2007-11-15 17:10) [8]


> по каким пречинам bpl лутше.?


http://delphi.about.com/od/objectpascalide/a/bpl_vs_dll.htm


 
de.   (2007-11-15 17:12) [9]


> oldman ©   (15.11.07 17:07) [7]

Печатаю аж пыть столбом стоит... ;-)


 
clickmaker ©   (2007-11-15 17:14) [10]


> пыть столбом стоит

Бедная Пыть... )


 
Сусл ©   (2007-11-16 00:36) [11]

я за bpl - это реальная, нет! нереальная круть. как быдто без пакетов пишешь, так все прозрачно.

но вот, если протектить от взлома нужно программу, то вроде лучше без bpl (ну гуру так говорят, я то сам в этом слаб).



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

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
2-1195404780
Арсен
2007-11-18 19:53
2007.12.16
Свой компонент Grid, наследуемый от TStringGrid


15-1194981035
БарЛог
2007-11-13 22:10
2007.12.16
Где скачать старые драйверы?


11-1181588619
=BuckLr=
2007-06-11 23:03
2007.12.16
Font background color


2-1195626418
Неместная
2007-11-21 09:26
2007.12.16
фукнкция обратная Chr


15-1195288205
@!!ex
2007-11-17 11:30
2007.12.16
Загрузка png Linux и Windows