如何把Dll中的事件引出来呀

mahushen 2012-04-11 05:40:08
我写的Dll代码,其中的FDataServerObj有一个onDataPack事件,如何在Dll中引出FDataServerObj的onDataPack事件到主程序.


library DataServer;
uses
SysUtils,
Classes,
System,
DataServerObj;

type
TDataPackReceive = procedure(p_DataPackHex: pchar; p_Data: pchar; p_DataLen: integer); //数据包事件
TStateEvent = procedure(p_State: integer; p_StateDesc: pchar); //状态事件

var
FDataServerObj: TDataServerObj;

procedure datapack();
begin

end;
function DataServerInit(p_CommNum: integer): Boolean; stdcall
begin
result := false;
try
FDataServerObj := TDataServerObj.Create(nil);
//FDataServerObj.onDataPack := datapack;
FDataServerObj.CommStart(p_CommNum);

result := true;

except

end;
end;

{$R *.res}
exports DataServerInit;
begin
end.
==================================================
DataServerOjb组件代码
unit DataServerObj;

interface

uses
SysUtils, Classes, MSCommLib_TLB,DataProceThread,ExtCtrls;

type
TonDataPackEvent = procedure(SAddress:Integer;DataPackHex: pchar; DataPackLen: integer) of object; stdcall;

TDataServerObj = class(TComponent)
private
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(Owner: TComponent); override;
destructor Destroy; override;

published
{ Published declarations }
property onDataPack: TonDataPackEvent write SetonDataPack;
end;
implementation
{ TDataServerObj }
constructor TDataServerObj.Create(Owner: TComponent);
begin
inherited;

end;

destructor TDataServerObj.Destroy;
begin
FDataProc.Free;

inherited;
end;

end.

...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2012-04-12
  • 打赏
  • 举报
回复
将DLL的接口做好了,在EXE中直接调用即可
s11ss 2012-04-12
  • 打赏
  • 举报
回复
function DataServerInit(p_CommNum: integer; datapac: TonDataPackEvent): Boolean; stdcall;
begin
result := false;
try
FDataServerObj := TDataServerObj.Create(nil);
FDataServerObj.onDataPack := datapack; FDataServerObj.CommStart(p_CommNum);

result := true;

except

end;
end;

mahushen 2012-04-12
  • 打赏
  • 举报
回复
做成DLL是为了做硬件开发接口.所以不能用BPL.

我也知道用回调函数可以实现这个功能,可问题是我不明白怎么用回调函数来实现,网上倒是能搜出一大堆关于回调函数的内容可越看越不明白怎么用,还请高人们能直接给个指导,最好能给几段示例代码,忠心感谢!
我看见佛 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
改成BPL吧,这样只要在主程序中uses这个单元就可以使用了
[/Quote]BPL操作起来确实方便些。
bdmh 2012-04-12
  • 打赏
  • 举报
回复
用回调函数,去google吧
xinghun61 2012-04-11
  • 打赏
  • 举报
回复
改成BPL吧,这样只要在主程序中uses这个单元就可以使用了

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧