我想写一个类似与木马server端的程序,程序要尽量的小
所以我没有使用窗口,就一个Project文件
但是如何在里面使用我需要的网络控件呢?如:TServerSocket等
控件加入以后如何加入其事前呢?
还有,如何让程序不退出,一直运行着?
大家能不能帮我举个例子呀?谢谢了
小弟初学Delphi,希望多多指教!
所以我没有使用窗口,就一个Project文件
但是如何在里面使用我需要的网络控件呢?如:TServerSocket等
控件加入以后如何加入其事前呢?
还有,如何让程序不退出,一直运行着?
大家能不能帮我举个例子呀?谢谢了
小弟初学Delphi,希望多多指教!
解决方案 »
- delphi 界面控件
- indy9.00.10的IdFTP.list(aStrLst,'*.txt',False)在文件不存的情况下出错!
- listview控件中item的排列问题
- 在adotable1中,已知属性出生年月,如何增加一个属性名为年龄的计算字段?
- 关于lookup的问题,请高手教路,谢谢.
- 请问谁知道,<DELPHI 5.0 开发人员指南>英文原版的电子文档,在那可以下载!
- fastreport 小写转大写金额,函数怎么调用?
- 请问,如何定位二维数组。(ngyxh)
- 透明的TMemo控件
- 请教一个问题:如何编写一个位于最最上层的窗口,像oicq那样(我发现它能够位于最最上层)
- 如何设置计算机的描述值? (在网络邻居左栏里显示的那个)
- 急问一个连接数据库的小问题!在线等
除非你写纯控制台的程序,不要Application。
而控件也是类,你平时怎么用类的,控件也是一样的,要创建,要赋值。
ClientSocket:TClientSocket;
procedure ClientSocketConnecting(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketWrite(Sender: TObject; Socket: TCustomWinSocket);..................
ClientSocket:=TClientSocket.Create(AOwner);
ClientSocket.Port:=Port;
ClientSocket.Host:=Ip;
ClientSocket.ClientType:=ctNonBlocking;
ClientSocket.OnConnecting:=ClientSocketConnecting;
ClientSocket.OnConnect:=ClientSocketConnect;
ClientSocket.OnDisconnect:=ClientSocketDisconnect;
ClientSocket.OnError:=ClientSocketError;
ClientSocket.OnRead:=ClientSocketRead;
ClientSocket.OnWrite:=ClientSocketWrite;
编译的时候说:[Error] Project1.dpr(17): Incompatible types: 'TNotifyEvent' and 'Pointer'
我想可能是不能直接A.OnTimer:=AB;的问题;
我也不知道这样写对不对,但大家应该看懂了我的意思了吧?
==========================================
program Project1;uses
extctrls,Dialogs;
{$R *.res}var
A:Ttimer;
procedure AB(Sender: TObject);
begin
showmessage('aaa');
end;begin
A.Create(nil);
A.OnTimer:=AB;
A.Interval:=1000;
A.Enabled:=true;
end.
=====================================
private
A:Timer;
procedure AB(Sender:TObject);
.......................
constructor Create(AOwner: TComponent);overload;constructor TYourClass.Create(AOwner: TComponent);
begin
inherited Create;
.............
A.OnTimer:=AB;
end;
begin
showmessage('aaa');
end;
是一个普通的过程,参数头没有一个Self指针。
而事件指定要求的是一个类的方法类型,即方法的第一个参数是一个Self,即对象指针。你应该写类,用面向对象的方法来写。
程序运行到
A.OnTimer:=AB;
A.Interval:=1000;
A.Enabled:=true;
的时候就回出错~~
=========================================
program Project1;uses
Classes, Dialogs,extctrls;type
B = class
private
A:TTimer;
procedure AB(Sender:TObject);
constructor Create(AOwner: TComponent);overload;
{ Private declarations }
public
{ Public declarations }
end;
{$R *.res}
procedure B.AB(Sender:TObject);
begin
showmessage('aaa');
end;constructor B.Create(AOwner: TComponent);
begin
inherited Create;
A.OnTimer:=AB;
A.Interval:=1000;
A.Enabled:=true;
end;
begin
B.Create(nil);
end.
===================================
对象和实例的用法A,B你都错了。var
BTemp:B;constructor B.Create(AOwner: TComponent);
begin
inherited Create;
A:=TTimer.Create(AOwner);
A.OnTimer:=AB;
A.Interval:=1000;
A.Enabled:=true;
end;begin
BTemp:=B.Create(nil);
end;
这里还是会出错
但是另外一个问题又出现了
为什么我的A.OnTimer事件不会被触发?
程序运行一下就结束了?怎么能让程序一直运行着,可以响应A.OnTimer这个事件呀?
==================
program Project1;uses
Classes, Dialogs,extctrls;type
B = class
private
A:TTimer;
procedure AB(Sender:TObject);
constructor Create(AOwner: TComponent);overload;
{ Private declarations }
public
{ Public declarations }
end;
{$R *.res}var
BTemp:B;
ST:integer;
procedure B.AB(Sender:TObject);
begin
showmessage('aaa');
end;constructor B.Create(AOwner: TComponent);
begin
inherited Create;
A:=TTimer.Create(AOwner);
A.OnTimer:=AB;
A.Interval:=1000;
A.Enabled:=true;
end;
begin
ST:=0;
Btemp:=B.Create(nil);
end.
==============
ST:=0;
Btemp:=B.Create(nil);
while true do
begin
TApplication.Create(nil).ProcessMessages;
。。
end;
如果不用forms的话就不能用TApplication了