各位兄台:
我现在遇到了如下一个问题:我通过Delphi中的New菜单下面的Thread Object项创建了一个线程,然后在默认的方法Execute下面写了如下一段代码:
procedure TInteractThread.Execute;
var
i:integer;
strplan_id:string;
column1,column2,column3:string;
bidvalue_caculate:single;
begin
{ Place thread code here }
form1.biding_flag:=true;
while form1.biding_flag do
begin
//等待readyflag=1;
if form1.ADODataSet2.Active =true then form1.ADODataSet2.Close;
form1.ADODataSet2.CommandText:='select * from Serverflag';
form1.ADODataSet2.Active:=true; while form1.ADODataSet2.Recordset.RecordCount=0 do
begin
if form1.ADODataSet2.Active =true then form1.ADODataSet2.Close;
form1.ADODataSet2.CommandText:='select * from Serverflag';
form1.ADODataSet2.Active:=true;
end; form1.ADOCommand1.CommandText:='DELETE FROM Serverflag';
form1.ADOCommand1.Execute ;
//读取投标值表 if form1.ADODataSet2.Active =true then form1.ADODataSet2.Close; form1.ADODataSet2.CommandText:=format('select shop_id,plan_id from publish_tt where shop_id=''%s''',[form1.edit1.Text]);;
form1.ADODataSet2.Active:=true; strplan_id:=form1.ADODataSet2.Recordset.Fields ['plan_id'].Value;
//调用算法计算投标值
bidvalue_caculate:=random(100);
column1:=form1.edit1.text; column3:=floattostr(bidvalue_caculate); form1.ADOCommand1.CommandText :=format('insert into bidvalue_tt(shop_id,bidvalue)values(''%s'',''%s'')',[column1,column3]);
form1.ADOCommand1.Execute; column1:=form1.edit1.Text;
column2:='1'; form1.ADOCommand1.CommandText:=format('insert into Clientflag(shop_id,readyflag)values(''%s'',''%s'')',[column1,column2]);
form1.ADOCommand1.Execute ;
end;
end;
并在主界面中入一个按钮,其事件内容如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
InteractThread:=TInteractThread.Create(false);
InteractThread.Priority:=tpNormal;
InteractThread.FreeOnTerminate:=true;
end;在运行时居然会出现在如下错误:
Project ProjectClient.exe raised exception class EOleException with message‘尚未调用'CoInitialize。Process stopped.Use Step or Run to continue.请各位高手指点啊,在下先谢过了!分数不够,再加!!!!!
我现在遇到了如下一个问题:我通过Delphi中的New菜单下面的Thread Object项创建了一个线程,然后在默认的方法Execute下面写了如下一段代码:
procedure TInteractThread.Execute;
var
i:integer;
strplan_id:string;
column1,column2,column3:string;
bidvalue_caculate:single;
begin
{ Place thread code here }
form1.biding_flag:=true;
while form1.biding_flag do
begin
//等待readyflag=1;
if form1.ADODataSet2.Active =true then form1.ADODataSet2.Close;
form1.ADODataSet2.CommandText:='select * from Serverflag';
form1.ADODataSet2.Active:=true; while form1.ADODataSet2.Recordset.RecordCount=0 do
begin
if form1.ADODataSet2.Active =true then form1.ADODataSet2.Close;
form1.ADODataSet2.CommandText:='select * from Serverflag';
form1.ADODataSet2.Active:=true;
end; form1.ADOCommand1.CommandText:='DELETE FROM Serverflag';
form1.ADOCommand1.Execute ;
//读取投标值表 if form1.ADODataSet2.Active =true then form1.ADODataSet2.Close; form1.ADODataSet2.CommandText:=format('select shop_id,plan_id from publish_tt where shop_id=''%s''',[form1.edit1.Text]);;
form1.ADODataSet2.Active:=true; strplan_id:=form1.ADODataSet2.Recordset.Fields ['plan_id'].Value;
//调用算法计算投标值
bidvalue_caculate:=random(100);
column1:=form1.edit1.text; column3:=floattostr(bidvalue_caculate); form1.ADOCommand1.CommandText :=format('insert into bidvalue_tt(shop_id,bidvalue)values(''%s'',''%s'')',[column1,column3]);
form1.ADOCommand1.Execute; column1:=form1.edit1.Text;
column2:='1'; form1.ADOCommand1.CommandText:=format('insert into Clientflag(shop_id,readyflag)values(''%s'',''%s'')',[column1,column2]);
form1.ADOCommand1.Execute ;
end;
end;
并在主界面中入一个按钮,其事件内容如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
InteractThread:=TInteractThread.Create(false);
InteractThread.Priority:=tpNormal;
InteractThread.FreeOnTerminate:=true;
end;在运行时居然会出现在如下错误:
Project ProjectClient.exe raised exception class EOleException with message‘尚未调用'CoInitialize。Process stopped.Use Step or Run to continue.请各位高手指点啊,在下先谢过了!分数不够,再加!!!!!
解决方案 »
- 小弟用的是delphi 7.0 刚安装一个 FastReport v4.2 EnterPrise组件,但在制作好报表后运行程式会出现一个错误的对话框,提示 "Class TfrxAD
- 问题:怎样将字符串和一个文件片段用套节字发送出去?
- 在新窗体中打开image,就会出错,为什么?
- 谁有TreeView控件属性方法的介绍?怎样动态加载节点?
- 请问一个分组排序的问题?
- 高手请回答:SQL语句between 的用法?这样写对吗?给分!
- 在Delphi中如何使用HTML帮助文件?
- 菜鸟问题10
- 关于组件Adoconnection的有关疑问?( 急急急!!!!)
- 很简单的东西,进来看看,举手之劳而已。
- property OnDragOver stored IsForm;这里的stored IsForm是什么意思?
- 遇到查询问题。请高手指点!
CoInitialize(nil);
finalization
CoUninitialize;
在你的单元最好加上以上代码就行了。因为ado控件必须调用com初始化过程,只是在主线程时TForm或者TDatamodule替你调用而已
CoInitialize(nil);
finalization
CoUninitialize;
这个要放在你单元的末尾,在end.之前。帮助里面有initialization的说明。