unit main;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, jpeg, ComCtrls,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, DB,
ADODB, XPMenu;
type
Tmainfrm = class(TForm)
...........................
end;
IpThread=class(TThread)
private
n,row:integer;
st,ipaddr:string;
ADOQ: TADOQuery;
protected
procedure Execute; override;
public
constructor create(ip_addr:string);
end;
var
mainfrm: Tmainfrm;
IPping: IpThread;implementationuses yhdl;
var s,t,logout:string;{$R *.dfm}
constructor IpThread.create(ip_addr:string);
begin
FreeOnTerminate:=true;
inherited create(false);
end;
procedure IpThread.Execute;
var i:integer;
begin
st:='select ip from zdip';
AdoQ.Close;
AdoQ.SQL.CLEAR;
AdoQ.SQL.Add(st);
AdoQ.open;
row:=adoq.recordcount;
adoq.first; AdoQ.Close;
AdoQ.SQL.CLEAR;
ADOQ.SQL.Add('select ip from zdip');
ADOQ.Open;
for i:=0 to row-1 do
begin
ipaddr:=adoq.FieldByName('ip').asstring;
adoq.Next;
sleep(1000);
end;
end;
上面的程序有什么问题?如何在BUTTONCLICK里调用?
本人急着要用,刚开始学,有点迷失方向了
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, jpeg, ComCtrls,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, DB,
ADODB, XPMenu;
type
Tmainfrm = class(TForm)
...........................
end;
IpThread=class(TThread)
private
n,row:integer;
st,ipaddr:string;
ADOQ: TADOQuery;
protected
procedure Execute; override;
public
constructor create(ip_addr:string);
end;
var
mainfrm: Tmainfrm;
IPping: IpThread;implementationuses yhdl;
var s,t,logout:string;{$R *.dfm}
constructor IpThread.create(ip_addr:string);
begin
FreeOnTerminate:=true;
inherited create(false);
end;
procedure IpThread.Execute;
var i:integer;
begin
st:='select ip from zdip';
AdoQ.Close;
AdoQ.SQL.CLEAR;
AdoQ.SQL.Add(st);
AdoQ.open;
row:=adoq.recordcount;
adoq.first; AdoQ.Close;
AdoQ.SQL.CLEAR;
ADOQ.SQL.Add('select ip from zdip');
ADOQ.Open;
for i:=0 to row-1 do
begin
ipaddr:=adoq.FieldByName('ip').asstring;
adoq.Next;
sleep(1000);
end;
end;
上面的程序有什么问题?如何在BUTTONCLICK里调用?
本人急着要用,刚开始学,有点迷失方向了
解决方案 »
- 上万条记录同时入库?怎么让他速度更快?ADO+MDB
- 模拟用鼠标点击窗体最小化按钮
- 如何编译一个dpr文件,谢谢
- 求助,在 SQL SERVER 2000 有没有这样的函数,只取 ’2005-5-5 7:24:00‘ 中的 ’7:24:00' ,谢谢!
- 求助:为什么ADOQry.RecordCount总是-1?
- oracle客户端连接
- 一个函数的执行过程要花很多时间,怎么让它暂停,继续执行,取消?急!!
- 在DELPHI5里面的DBGRID如何实现对多条记录的选择?
- 怎么在TRichEdit里加入一个图标?
- Delphi 数据库问题,我怎样在Midas编程中设置主从数据库:
- 用fastreport时,怎样在一页上打印两个表?
- 我的主程序传递一个数据库连接字符串给dll,到了dll里面怎么会变成乱码了?
2,ADOQUERY必须要进行TRY等异常处理;其他地方也需要,自己找找看;
3,调用的时候比较简单;
IPping:=IpThread.create('yourip');这样就创建并运行了你的THREAD
这里你创建的时候要输入的参数啊;
COINI要分配COM空间;具体要USE ACTIVEX,然后调用COINI。。后面部分不记得了,是个函数;
YourThread:=ipThread.Create(ipstr);
其中YourThread是你的线程实例的名字,随便起,ipstr是你要传递给线程的参数.没有必要分配空间.ADOQUERY也没有必要创建.如果你想保险的话,可以先ADOQUERY.free,然后ADOQUERY.create;如果你要把ipstr传递给线程实例的话,可以这样写:
constructor IpThread.create(ipstr);
begin
ipaddr:=ipstr;
FreeOnTerminate:=true;
inherited create(false);
end;
ipaddr是你在线程里定义的公共成员.你在private里写的
n,row:integer;
st,ipaddr:string;
ADOQ: TADOQuery;
在外面是没有办法访问的,如果要访问,你需要把他们都放到public里面.