那是提示内存错误.你用的什么数据库?ACCESS?
解决方案 »
- 求教,我在sql 2000能用的语句,转换到delphi里面,引号什么怎么处理,用adoquery.text:=''l老是报错
- 关于Rzpanel的一些问题
- 备份IIS时候方法Backup是从哪里调用的?
- 急救!!VISTA下对U盘的直接写被拒绝访问的问题
- 读取Excel后的进程释放问题,急,急,急!!!
- 为什么双击DBGRID修改字段宽度以后 DBGRID里原先显示的数据就没了
- 关于NEW()创建的内存在TREEVIEW中应用的问题?
- edit?
- 能不能把数据封装在程序里面?
- 请教:怎么把单引号作为字符显示出来啊?
- 如何在程序中往Access数据库中加入一个表?
- 不知道各位见过“delphi编程资源大全”没有?
多找找自己的原因吧,我觉得DELPHI的数据库编程还是很好用的
我用数据库存储了部门名称,用另一个数据库存储了公司员工,现在我要在treeview中加入第层为公司部门,第二次为公司员工的树形结构显示!在别一边我用了dbgrid来显示当在treeview中单击部门某职工时,显示相应的职工情况。
其treeview中我加入了代码为:
catnode,child,child1:ttreenode;
bm:string;
begin
catnode:=treeview1.Items.AddFirst(nil,'全公司员工名单');
catnode.ImageIndex:=1;
catnode.Selectedindex:=1;
table1.First;
while not table1.Eof do
begin
child:=treeview1.Items.AddChild(treeview1.items.GetFirstNode,table1.Fields[1].Text);
child.ImageIndex:=2;
child.Selectedindex:=2;
bm:=table1.Fields[0].text;
table2.first;
while not table2.eof do
begin
if table2.Fields[0].text=bm then
child1:=treeview1.Items.addchild(child,table2.fields[1].text);
child1.ImageIndex:=0;
child1.Selectedindex:=0;
table2.Next;
end;
table1.Next;
end;
end;
你们看看,上面的程序那里有问题?我将上面的代码删除就没有出现错误提示了。
bm:string;
begin
catnode:=treeview1.Items.AddFirst(nil,'全公司员工名单');
catnode.ImageIndex:=1;
catnode.Selectedindex:=1;
table1.open;
table1.First;
while not table1.Eof do
begin
child:=treeview1.Items.AddChild(treeview1.items.GetFirstNode,table1.Fields[1].Text);
child.ImageIndex:=2;
child.Selectedindex:=2;
bm:=table1.Fields[0].text;
table2.open;
table2.first;
while not table2.eof do
begin
if table2.Fields[0].text=bm then
child1:=treeview1.Items.addchild(child,table2.fields[1].text);
child1.ImageIndex:=0;
child1.Selectedindex:=0;
table2.Next;
end;
table1.Next;
end;
table1.close;
table2.close;
end;
再试一下!
if table2.Fields[0].text=bm then
child1:=treeview1.Items.addchild(child,table2.fields[1].text);
begin
child1.ImageIndex:=0;
child1.Selectedindex:=0;
end;
table2.Next
后就没有错误了,不知为什么,是不是delphi的bug?
if table2.Fields[0].text=bm then
begin
child1:=treeview1.Items.addchild(child,table2.fields[1].text);
child1.ImageIndex:=0;
child1.Selectedindex:=0;
end;
table2.Next
if table2.Fields[0].text=bm then
child1:=treeview1.Items.addchild(child,table2.fields[1].text);
child1.ImageIndex:=0;
child1.Selectedindex:=0;
逻辑是 如果相等那么child1就赋值,然后不管什么情况,child1.imageindex := 0;
child1.SelectedIndex := 0;
这样的话,如果table2.Fields[0].text和bm不相等就不执行child1:= TreeView.......
直接给child1.ImageIndex和 SelectedIndex赋值,给空指针赋值,嘿嘿,不错才怪。
以后遇到类似的出错信息,十之八九是空指针操作。
我从delphi1用到delphi5,只有最近的ADO的eof和bof错误是Delphi的(打补丁后就好了)
其他的错误都是我自己不小心造成的,没有delphi什么事。