好像不关数据库的事, 这只是一种算法, 好像叫bom
解决方案 »
- TImage组件默认支持*.bmp,*.ico,*.emf,*.wmf;能否改变这个默认值,使其支持更多的图像格式呢?
- 请教各位一下delphi的打印问题???
- 数据库出错自动连接
- 请问各位如何进行Unicode编程?
- 做一软件(找工作用)得到了MM的夸讲,散一点点分。
- 求救,关于自动登陆。
- 我在2000下写的程序在2000下能正常使用,但在98下出现错误!为什么?
- Delphi表格制作
- DLL动态调用的问题,应注意些什么?
- 怎样用table的filter属性过滤某个范围内的数据??
- god !delphi的integer和c的int居然内存结构不一样?help me
- 如何用SQl语句的update更新当前的记录。
其实可以这样
将两列表全部读出来分别放到两个链表里左边一栏为A链表
右边一栏为B链表再用一循环
从B链表中删除在A链表中存在的数据最后的B链表便是你要的结果
怕你没收到所以再贴一次
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DB, ADODB;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
chain1,chain2,chain3:tstringlist;
procedure addnode(str1:string);
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.addnode(str1: string);
var
i:integer;
begin
for i:=0 to chain2.Count-1 do
begin
if chain1.Strings[i]=str1 then
if not (chain3.IndexOf(chain2.Strings[i])<>-1) then
begin
chain3.AddObject(chain2.Strings[i],treeview1.Items.AddChild(chain3.objects[chain3.indexof(chain1.Strings[i])] as ttreenode,chain2.strings[i]));
addnode(chain2.Strings[i]);
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
i:=0;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select col1,col2 from search');
adoquery1.Open;
while not adoquery1.Eof do
begin
chain1.Add(adoquery1.fieldbyname('col1').AsString);
chain2.Add(adoquery1.fieldbyname('col2').AsString);
adoquery1.Next;
end; for i:=0 to chain2.Count-1 do
begin
if not ((chain2.IndexOf(chain1.Strings[i]))<>-1) then
// if not chain3.indexof(chain1.strings[i])<>-1 then
chain3.AddObject(chain1.Strings[i],treeview1.Items.AddChild(nil,chain1.Strings[i]));
end;
for i:=0 to chain3.Count-1 do
begin
//showmessage(chain3.strings[i]); addnode(chain3.Strings[i]);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
chain1:=tstringlist.Create;
chain2:=tstringlist.Create;
chain3:=tstringlist.Create;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
chain1.Free;
chain2.Free;
chain3.Free;
end;end.