包含Indy UDPServer的DLL为什么会出错? ( 积分: 200 )

  • 主题发起人 主题发起人 cwzcwz
  • 开始时间 开始时间
C

cwzcwz

Unregistered / Unconfirmed
GUEST, unregistred user!
type
TClientClass = class
IDUDPS: TIdUDPServer;
procedure IDUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
public
constructor Create;
destructor Destroy; override;
end;
constructor TClientClass.Create;
begin
inherited;
IdUDPS := TIdUDPServer.Create(nil);
IdUDPS.OnUDPRead := IDUDPRead; //如果不放这句,执行正常.
IdUDPS.Active := True;
end;
procedure TClientClass.IDUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
//
end;

View Source:

function Client_Initialize: Boolean;
begin
if FClient = nil then
begin
FClient := TClientClass.Create;
Result := True;
end
else
begin
Result := False;
end;
end;
exports
Client_Initialize;

主程序是一个C++的exe,用动态调用的方式,如果不加IdUDPS.OnUDPRead := IDUDPRead;
这句,一切正常,如果加了这句,F9后无法断到下的断点,并且执行出错.
 
Indy几?如果是Indy10的话,AData的参数是TIdBytes,而不是TStream.兄弟查查Indy自己的声明以便确认一下事件过程的完整参数和声明是否一致。
 
indy9 不是参数的问题,参数没有问题,编译可以通过,就是运行时会出错.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
654
import
I
后退
顶部