unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure ClientRead (Sender: TObject; Socket: TCustomWinSocket);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}var
ServerSocket1: TServerSocket;procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.OnClientRead := ClientRead;
end;procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
beginend;end.
上面的代码是可行的,而且没有错误的
\\-------------------------------------------------------------------------
下面的代码是不可行的,而且有错误,但我不清楚为什么会出错library ClientDll;uses
SysUtils,
Classes,
ScktComp,
Command in 'Command.pas';{$R *.res}var
ServerSocket1: TServerSocket;procedure ClientRead (Sender: TObject; Socket: TCustomWinSocket);
var
S: string;
begin
S := Socket.ReceiveText;
end;procedure StartTcpServer;
begin
ServerSocket1 := TServerSocket.Create(nil);
with ServerSocket1 do
begin
Port := 503;
ServerType := stThreadBlocking;
OnClientRead := ClientRead;
Active := True;
end;
end;procedure CloseTcpServer;
begin
with ServerSocket1 do
begin
Active := False;
Free;
end;
end;beginend.
\\--------------------------------------------------------------上面的二段代码同样是OnClientRead := ClientRead;但下面的一个就有问题,是错误的。我不知道是那里出了问题,是不是DLL里面不能这样写。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure ClientRead (Sender: TObject; Socket: TCustomWinSocket);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}var
ServerSocket1: TServerSocket;procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.OnClientRead := ClientRead;
end;procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
beginend;end.
上面的代码是可行的,而且没有错误的
\\-------------------------------------------------------------------------
下面的代码是不可行的,而且有错误,但我不清楚为什么会出错library ClientDll;uses
SysUtils,
Classes,
ScktComp,
Command in 'Command.pas';{$R *.res}var
ServerSocket1: TServerSocket;procedure ClientRead (Sender: TObject; Socket: TCustomWinSocket);
var
S: string;
begin
S := Socket.ReceiveText;
end;procedure StartTcpServer;
begin
ServerSocket1 := TServerSocket.Create(nil);
with ServerSocket1 do
begin
Port := 503;
ServerType := stThreadBlocking;
OnClientRead := ClientRead;
Active := True;
end;
end;procedure CloseTcpServer;
begin
with ServerSocket1 do
begin
Active := False;
Free;
end;
end;beginend.
\\--------------------------------------------------------------上面的二段代码同样是OnClientRead := ClientRead;但下面的一个就有问题,是错误的。我不知道是那里出了问题,是不是DLL里面不能这样写。
解决方案 »
- 如何在XP和2000下隐藏进程??
- DBGrideh中PickList属性设置的下拉列表
- 有关TDBChart控件的数据显示风格!请各位指点一二!TKS!
- 请问各位,特别是版主:怎么样能把自己信誉分折腾下去
- 如何实现byte to string 的转换?
- 向各位请教一个关于程序打包的问题!
- 这种情况应如何退出程序等两个问题(先解决先得分)。
- 菜鸟问题:我做了个小软件,是大公司内部办公交流用的,从各方面考虑采用ACCESS,但需要支持网络,现想做成安装程序,遇到问题,请指教
- 有关com的几个小问题(100分相送,凡是涉及到COM方面的回答,都给分)
- 程序放到另一台机子上出的问题
- 关于在串口接收时多线程同步的问题?
- 月亮这小子也要结婚了,不能不恭喜!!~~~ 新婚xx哈
ScktComp;type
TProcess=class
public
class procedure ClientRead (Sender: TObject; Socket: TCustomWinSocket);
end;implementation{ TProcess }class procedure TProcess.ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
S: string;
begin
S := Socket.ReceiveText;
end;end.然后到Dll library中改OnClientRead := TProcess.ClientRead; //TProcess不用创建,ClientRead只是一个类方法
SysUtils, ScktComp;type
TProcess = class
class procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
end;var
ServerSocket1: TServerSocket;{ TProcess }class procedure TProcess.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
S: string;
begin
S := Socket.ReceiveText;
WriteLn(S);
end;begin
ServerSocket1 := TServerSocket.Create(nil);
with ServerSocket1 do
begin
Port := 11111;
Active := True;
OnClientRead := TProcess.ClientRead;
end;
WriteLn('ServerSocket...Open OK');
ReadLn;
end.Client----------------------------------------------------------------------------unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
with ClientSocket1 do
begin
Address := '127.0.0.1';
Port := 11111;
Active := True;
Socket.SendText('Hello,World');
end;
end;end.