Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Kol и DLL (Плагины) [Delphi, Windows, Win XP]


Страницы:   1 2

stals ©   (2005-03-09 20:21:00) 

Народ! Почему это глючит:
{=== Код основной программы ============================}
program Primer;
uses
 Windows,
 KOL;
var
 Form, But1, Memo : PControl;

procedure PlugClick(FileName:string);
var
 PlugExec : function(Memo:Pcontrol; fn:string): boolean;
 PlugType : function: PChar;
 handle   : Thandle;
begin
 handle := LoadLibrary(Pchar(FileName));
 if handle <> 0 then
 begin
   @plugExec := GetProcAddress(handle,'PluginExec');
   @plugType := GetProcAddress(handle,'PluginType');
   if PlugType = 'RE' then PlugExec(Memo,filename);
 end;
 FreeLibrary(handle);
end;

procedure ClickBut1( Dummy : Pointer; Sender: PControl );
begin
 PlugClick('MyDLL.dll');
end;

begin
 form:=NewForm(Applet,'New Project');
 Form.Width:=490;
 Form.Height:=290;
   but1:=NewButton(form,'Load procedure from DLL').SetAlign(caBottom);
   but1.OnClick:=TOnEvent(MakeMethod( nil, @clickbut1));
 Memo:=NewEditbox(Form,[eoMultiline]).SetAlign(caClient);
 run(form);
end.

{=== Код вызываемой DLL ============================================}
library MyDLL;
uses
 windows, KOL, Messages;
 
function PluginType : Pchar;
begin
 Plugintype := 'RE';
end;

function PluginName:Pchar;
begin
 PluginName := 'My Plagin';
end;

function PluginExec(M:PControl; path:string):Boolean;
begin
 m.Color:=clBlack;
 m.font.Color:=clWhite;
 m.Add('path = '+path);
 Result:=true;
end;

exports
 PluginType, PluginName, PluginExec;
end.

{==================================================================}
Все ведь, вроде как, правильно?
Но стоит применить этот плагин, так потом, при закрытии проги,
выскакивает error 206.
Если применить его 2 раза подряд, то тоже выскочит! :(
Как лечить?
Если не пытаться изменять параметры Memo в плагине, то все пучком...
А иначе - глюк... :(
Создается впечатление что Pcontrol нельзя применять в качестве передаваемого
параметра функции, ибо с другими объектами такого глюка нет...
Так в чем же, на самом деле, дело? :)


BelchonokH   (2005-03-09 20:28:00) [21]

Бегло: Вроде как вместо стринга лучше PChar использовать


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо