线程执行没反应阿!!(100分)

  • 主题发起人 主题发起人 aocandy
  • 开始时间 开始时间
A

aocandy

Unregistered / Unconfirmed
GUEST, unregistred user!
unit mst;
interface
uses
SysUtils, Classes,Dialogs,ADODB;
type
st = class(TThread)
ADOT:TADOTable;
private
{ Private declarations }
protected
procedure Execute;
override;
end;
implementation
uses m;
{ st }
procedure st.Execute;
var i:integer;
begin
ADOT.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/netdb200210.mdb;';
ADOT.TableName:='peo';
try
ADOT.Close;
ADOT.Open;
ShowMessage('dd33');
except
ShowMessage('dd');
ADOT.Close;
ADOT.Free;
end;
i:=1;
While Truedo
begin
Form1.Label1.Caption:=IntToStr(i)+'4';//+Form1.ADOTable1.FieldByName('name').AsString;
inc(i);
end;
end;
end.
把ADOC的不分全部去掉,执行没问题~可加上没反应,在delphi中执行就提示错误~
 
下面这段好像有点错误(不是语法错误,结果显示'dd'),你把下面的单独拿到线程外试一下,找到错误原因后去掉就行了
在线程中数据库操作出错时好像不报错,而是停下了,我也遇到过类似的问题
另外在线程中不应该直接用Form1.Label1.Caption:=IntToStr(i)+'4';//
应该用Synchronize吧,你可以查一下帮助
try
ADOT.Close;
ADOT.Open;
ShowMessage('dd33');
except
ShowMessage('dd');
ADOT.Close;
ADOT.Free;
end;
 
你的ADOT 都没有Create;
使用前或建立线程时加上:
ADOT:=TADOTable.Create(nil);
 
后退
顶部