错误提示如下:Exception EAccessViolation in module Wgqp.exe at 0002752A.Access Violation at address 0042752A in module'Wgqp.exe'.Read of address FBC0E9D2。
代码如下:
procedure TFrmInfoM.MakeTree(TreeView:TTreeView);
var
Root:TTreeNode;
begin
Root:=TreeView.Items.AddFirst(nil,'文档资料');
MakeFirstLayer(TreeView);
end;procedure TFrmInfoM.MakeFirstLayer(TreeView:TTreeView);
var
Sql:string;
rs:_Recordset;
ObjNode:TNodeObject;
ChildNode:TTreeNode;
CName:string;
begin
Sql:='select distinct CataName from zlInfo';
rs:=Database.ADOC.Execute(Sql);
while not rs.EOF do
begin
CName:=rs.Fields['CataName'].Value;
ChildNode:=TreeView.Items.AddChild(TreeView.Items.GetFirstNode,CName);
ObjNode:=TNodeObject.Create;
ObjNode.CName:=CName;
ChildNode.Data:=ObjNode;
MakeSecondLayer(TreeView,ChildNode);
rs.MoveNext;
end;
rs.Close;
end;procedure TFrmInfoM.MakeSeCondLayer(TreeView:TTreeView;FatherNode:TTreeNode);
var
Sql:&string;
Rs:_Recordset;
ObjNode:TNodeObject;
ChildNode:TTreeNode;
CName,FName:&string;
begin
CName:=TNodeObject(FatherNode.Data).CName;
Sql:='select distinct Name from zlinfo where cataName="'+trim(CName)+'"';
Rs:=Database.ADOC.Execute(Sql);
while not Rs.EOF do
begin
FName:=Rs.Fields['Name'].Value;
ChildNode:=TreeView.Items.AddChild(FatherNode,FName);
ObjNode.CName:=TNodeObject(FatherNode.Data).CName;
ObjNode.FName:=FName;
ChildNode.Data:=ObjNode;
Rs.MoveNext;
end;
Rs.Close;
end;
代码如下:
procedure TFrmInfoM.MakeTree(TreeView:TTreeView);
var
Root:TTreeNode;
begin
Root:=TreeView.Items.AddFirst(nil,'文档资料');
MakeFirstLayer(TreeView);
end;procedure TFrmInfoM.MakeFirstLayer(TreeView:TTreeView);
var
Sql:string;
rs:_Recordset;
ObjNode:TNodeObject;
ChildNode:TTreeNode;
CName:string;
begin
Sql:='select distinct CataName from zlInfo';
rs:=Database.ADOC.Execute(Sql);
while not rs.EOF do
begin
CName:=rs.Fields['CataName'].Value;
ChildNode:=TreeView.Items.AddChild(TreeView.Items.GetFirstNode,CName);
ObjNode:=TNodeObject.Create;
ObjNode.CName:=CName;
ChildNode.Data:=ObjNode;
MakeSecondLayer(TreeView,ChildNode);
rs.MoveNext;
end;
rs.Close;
end;procedure TFrmInfoM.MakeSeCondLayer(TreeView:TTreeView;FatherNode:TTreeNode);
var
Sql:&string;
Rs:_Recordset;
ObjNode:TNodeObject;
ChildNode:TTreeNode;
CName,FName:&string;
begin
CName:=TNodeObject(FatherNode.Data).CName;
Sql:='select distinct Name from zlinfo where cataName="'+trim(CName)+'"';
Rs:=Database.ADOC.Execute(Sql);
while not Rs.EOF do
begin
FName:=Rs.Fields['Name'].Value;
ChildNode:=TreeView.Items.AddChild(FatherNode,FName);
ObjNode.CName:=TNodeObject(FatherNode.Data).CName;
ObjNode.FName:=FName;
ChildNode.Data:=ObjNode;
Rs.MoveNext;
end;
Rs.Close;
end;
解决方案 »
- qreport 中怎么实现打勾和字体竖着显示
- 怎么得到dll图标数量
- 请问我用ShowMessage()函数后,如何用语句实现关闭此窗口
- 怎样使用DELPHI控制WORD根据数据集里的数据生成图表
- DBGrid 显示的Table的列(Column)的列宽怎么跟DBGrid的宽度一样?
- textfile是什么类型等几个问题_2004.4.23
- 我怎么禁止别人向edit中输入
- 从字符串向datetime转换时失败 原因何在?
- 困了我一个星期、花了600分的问题终于搞定了!供大家参考。
- 如何通过DELPHI得到本机的IP地址?
- 下面DataSet的过滤语句有问题吗,在线等待?
- 急救,急救。字符串处理中遇到的怪问题
谢谢你的回答。但是没有以独占的方式打开。有谁能来解答一下吗?
我先来说明一下:上面的程序,我都在FormShow中调用。但是一关闭程序,就会出现上面的错误。
var
Root:TTreeNode;
begin
Root:=TreeView.Items.AddFirst(nil,'文档资料'); //pass
MakeFirstLayer(TreeView);//pass
end;procedure TFrmInfoM.MakeFirstLayer(TreeView:TTreeView);
var
Sql:string;
rs:_Recordset;
ObjNode:TNodeObject;
ChildNode:TTreeNode;
CName:string;
begin
Sql:='select distinct CataName from zlInfo';//pass
rs:=Database.ADOC.Execute(Sql);//pass
while not rs.EOF do//pass
begin
CName:=rs.Fields['CataName'].Value;//pass
ChildNode:=TreeView.Items.AddChild(TreeView.Items.GetFirstNode,CName);//pass
ObjNode:=TNodeObject.Create;//pass
ObjNode.CName:=CName;//pass
ChildNode.Data:=ObjNode;//pass
MakeSecondLayer(TreeView,ChildNode);//pass
rs.MoveNext;//pass
end;
rs.Close;
rs:=nil; <<<<<<<<<<<<<<<<記得釋放!!!
end;procedure TFrmInfoM.MakeSeCondLayer(TreeView:TTreeView;FatherNode:TTreeNode);
var
Sql:&string; <<<<<????Sql:&string????
Rs:_Recordset;
ObjNode:TNodeObject;
ChildNode:TTreeNode;
CName,FName:&string;
begin
<<<FatherNode對象在那里創建???
CName:=TNodeObject(FatherNode.Data).CName; <<<<<<<<<<<<<<<<這行最有可能報地址錯!!! Sql:='select distinct Name from zlinfo where cataName="'+trim(CName)+'"';
Rs:=Database.ADOC.Execute(Sql);//pass
while not Rs.EOF do//pass
begin
FName:=Rs.Fields['Name'].Value;//pass
ChildNode:=TreeView.Items.AddChild(FatherNode,FName);//pass
ObjNode.CName:=TNodeObject(FatherNode.Data).CName;//pass
ObjNode.FName:=FName;//pass
ChildNode.Data:=ObjNode;//pass
Rs.MoveNext;//pass
end;
Rs.Close;
rs:=nil<<<<<<<<<<<<<<<<<<<<end;
你操作一個nil指針, 純粹的是指針錯誤!你只要一步步跟蹤就能找出答案!
就只有这个提示了。我用单步追踪没发现什么问题,但是一关闭Form,就会出现这个错误提示.最常見的一個種情況是你在窗體中引用了 Interface 對象.
你將rs:_Recordset;換成 rs:TAdoDataSet也許能排除問題!