我写的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();
beginend;
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;interfaceuses
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.
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();
beginend;
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;interfaceuses
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.
begin
result := false;
try
FDataServerObj := TDataServerObj.Create(nil);
FDataServerObj.onDataPack := datapack; FDataServerObj.CommStart(p_CommNum); result := true; except end;
end;