![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Kol и DLL (Плагины) [Delphi, Windows, Win XP]
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 использовать