下面使用c++builer写得程序,请帮忙翻译成delphi
void TForm1::TreeAdd(TADOQuery * Q1, TTreeNodes * tn)
{
int i,j,num,t,pos=0;
String sql,tem_dm,tem_mc,bh;
TTreeNode *node[100000];
tn->Clear();
node[0]=NULL; sql="SELECT dwbh, dwmc, REPLACE(dwbh, '-', '.') AS Exp FROM dwxx ORDER BY REPLACE(dwbh, '-', '.')";
Q1->Close();
Q1->SQL->Clear();
Q1->SQL->Add(sql);
Q1->Open();
while(!Q1->Eof)
{
tem_dm =Q1->FieldByName("dwbh")->AsString.Trim();
tem_mc =Q1->FieldByName("dwmc")->AsString.Trim();
j = 1;
num = tem_dm.Length();
for(pos=0,t=1;t<=num;t++)
if(tem_dm[t] == '-'){ pos = t; j++; }
node[j] = tn->AddChild(node[j-1],bh+" "+tem_mc);
Q1->Next();
}}
非常急,在线等
void TForm1::TreeAdd(TADOQuery * Q1, TTreeNodes * tn)
{
int i,j,num,t,pos=0;
String sql,tem_dm,tem_mc,bh;
TTreeNode *node[100000];
tn->Clear();
node[0]=NULL; sql="SELECT dwbh, dwmc, REPLACE(dwbh, '-', '.') AS Exp FROM dwxx ORDER BY REPLACE(dwbh, '-', '.')";
Q1->Close();
Q1->SQL->Clear();
Q1->SQL->Add(sql);
Q1->Open();
while(!Q1->Eof)
{
tem_dm =Q1->FieldByName("dwbh")->AsString.Trim();
tem_mc =Q1->FieldByName("dwmc")->AsString.Trim();
j = 1;
num = tem_dm.Length();
for(pos=0,t=1;t<=num;t++)
if(tem_dm[t] == '-'){ pos = t; j++; }
node[j] = tn->AddChild(node[j-1],bh+" "+tem_mc);
Q1->Next();
}}
非常急,在线等
var
i, j, num, t, pos : integer;
sql, tem_dm, tem_mc, bh : string;
node : array[0..100000 - 1] of TTreeNode;
begin
tn.Clear;
node[0] := nil; sql := 'SELECT dwbh, dwmc, REPLACE(dwbh, ''-'', ''.'') AS Exp FROM dwxx ORDER BY REPLACE(dwbh, ''-'', ''.'')';
Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add(sql);
Q1.Open;
while (not Q1.Eof) do
begin
tem_dm := Trim(Q1.FieldByName('dwbh').AsString);
tem_mc := Trim(Q1.FieldByName('dwmc').AsString);
j := 1;
num := length(tem_dm);
pos := 0;
for t := 1 to num do
if(tem_dm[t] = '-') then
begin
pos := t;
inc(j);
end;
node[j] := tn.AddChild(node[j-1], bh + ' ' + tem_mc);
Q1.Next();
end;
end;
以上是根据代码直译过来的,需要在uses中包括ADODB, ComCtrls
没有时间仔细看,不过翻译中发现在循环内代码质量不好。比如说内层for循环实际上是找到最后一个'-',那为什么不倒循环呢?等等,你自己好好想吧
var
i, j, num, t, pos : integer;
sql, tem_dm, tem_mc, bh : string;
node : array[0..100000 - 1] of TTreeNode;
begin
tn.Clear;
node[0] := nil; sql := 'SELECT dwbh, dwmc, REPLACE(dwbh, ''-'', ''.'') AS Exp FROM dwxx ORDER BY REPLACE(dwbh, ''-'', ''.'')';
Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add(sql);
Q1.Open;
while (not Q1.Eof) do
begin
tem_dm := Trim(Q1.FieldByName('dwbh').AsString);
tem_mc := Trim(Q1.FieldByName('dwmc').AsString);
j := 1;
num := length(tem_dm);
pos := 0;
for t := 1 to num do
if(tem_dm[t] = '-') then
begin
pos := t;
inc(j);
end;
node[j] := tn.AddChild(node[j-1], bh + ' ' + tem_mc);
Q1.Next();
end;
end;