这个问题我在Csdn等了好多天了,一直没有满意的答案。各位高手是不是都不会,快进来帮我看看!(100分)

  • 主题发起人 主题发起人 pbcl
  • 开始时间 开始时间
P

pbcl

Unregistered / Unconfirmed
GUEST, unregistred user!
我在封装一个DLL,里面要用到WINSOCK的客户端(TCLIENTSocket),我不想生成

并显示窗体,动态生成TCLIENTSocket控件可以吗?如果可以的话,我想在

TClientSocket的ONREAD事件中定义自己的时间,如何定义?请给个例子。

我只能给100分了,如不够我可以想办法再加。谢谢!
 
当然可以。
声明一个函数
procedure MyClientRead(Sender: TObject;Socket: TCustomWinSocket);

var
i:TClientSocket;
begin
i.Onread:=MyClientRead;
........
end;
 
同意楼上兄弟!
 
不行,报:

incompatible type.'method pointer and regular procedure'

 
我编译通过了。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ClientSocket1: TClientSocket;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
procedure MyClientRead(Sender: TObject; Socket: TCustomWinSocket);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.MyClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
sleep(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i:TClientSocket;
begin
i.OnRead :=MyClientRead;
end;

end.
 
这是有窗体form的情况,我想不生成窗体form的情况下完成的。

而且TClientSocket要动态生成,最后要放入DLL中的。

 
sorry,没注意,等一下先
 
Toylin,谢谢你!
 
不用form也一样,你用一个随便什么代替就行了,就当是你新定义的一个类。
这个类唯一的存在目的就是为了提供这个ClientRead方法。

type
TShitClass = class
private
procedure MyClientRead(Sender: TObject; Socket: TCustomWinSocket);
end;

var
****: TShitClass;

....

ClientSocket.OnRead :=****.MyClientRead;


 
编译通过了,:)!

真是高手!看来过客也很强啊!

在小说里,少林寺最强的是扫地僧。

发分了!
 
这样,在引用的单元中,声明好啦。
uses
SysUtils,
Classes,
MyUnit;//自己的
exports
MyOnRead;
end.

 
我考!骂我是扫地的,吃我一滚!
 
后退
顶部