![]() |
|
|
#1
|
||||
|
||||
|
Так, хочу в свою прогу подключить планигы (dll файлы)
Есть вопросы : 1. Как создать dll и что в нём писать. 2. Что нужно написать в проге чтобы вызвать dll и выполнить его Предположим что нужно сделать простую прогу В dll'kе нужна функция FindFile(S: String):Boolen Функция проверят, if FileExist(S) then ShowMessage('ОК'); А в Form1 будет : Edit1 и Button1 Как нажимаем на Button1 то загрузается dll и идёт функция: FindFile(Form1.Edit1.Text); Помогите разобраца с dll'ками ) Ваш нуб X-rem ![]() |
|
#2
|
|||
|
|||
|
В инете дофига статей смотри там.
|
|
#3
|
||||
|
||||
|
Умнейший конечно ответ, но я всё ровно не понимаю)
|
|
#4
|
|||
|
|||
|
library Plugin;
uses SysUtils, Classes, dialogs,Forms, Unit1 in 'Unit1.pas' {Form1}; function FindFiles begin --- end; function PluginName:Pchar; begin PluginName := 'Ля - ля -ля'; end; procedure PluginExec; begin FindFiles; end; {$R *.res} exports PluginName, PluginExec,FindFiles; begin end. Что не понятного? |
|
#5
|
||||
|
||||
|
Цитата:
А вызвать как ? |
|
#6
|
|||
|
|||
|
Если работаешь с плагинами, то во всех плагинах должна присутствовать
функция с одним именем (например PluginExec). |
|
#7
|
||||
|
||||
|
Так как вызвать то ? )
|
|
#8
|
|||
|
|||
|
procedure TForm1.PluginExecute(FileName:string);
var PlugExec : procedure; handle : Thandle; begin handle := LoadLibrary(Pchar(FileName)); //Загружаем dll if handle <> 0 then begin @plugExec := GetProcAddress(handle,'PluginExec'); PlugExec; FreeLibrary(handle); end; end; |
|
#9
|
||||
|
||||
|
А где описать TForm1.PluginExecute(FileName:string); ?
![]() |
|
#10
|
|||
|
|||
|
В главной программе!
|
|
#11
|
||||
|
||||
|
А где именно , в private в public в type или в impletentation
|
|
#12
|
|||
|
|||
|
да где хош.
|
|
#13
|
||||
|
||||
|
Щяс я проверю, из форума не уходи ) Я в Личку напишу )
|