请来帮我看看为什么我的这个function不能实现在字符串前添加n个TAB值?
function Tf_power.TabNum(parent_name:string):string;
var
counter,i:integer;
s,p_name,r_name:string;
begin
s:=' '; //给s赋值为TAB值
r_name:='';
counter:=0;
p_name:=parent_name; //
while pos('.',p_name)<>0 do //判断父节点中是否还含有'.'字符
begin
i:=pos('.',p_name); //如果还含有'.',就将'.'的位置赋给变量i
delete(p_name,1,i); //然后删去'.'前的字(包括'.'字符),并赋值给p_name
counter:=counter+1; //记数器累加
end;
for i:=1 to counter do //循环累加TAB值
r_name:=s+r_name; // 在r_name前添加TAB值
TabNum:=r_name; //将r_name值赋给TabNum,并返回调用点
end;
function Tf_power.TabNum(parent_name:string):string;
var
counter,i:integer;
s,p_name,r_name:string;
begin
s:=' '; //给s赋值为TAB值
r_name:='';
counter:=0;
p_name:=parent_name; //
while pos('.',p_name)<>0 do //判断父节点中是否还含有'.'字符
begin
i:=pos('.',p_name); //如果还含有'.',就将'.'的位置赋给变量i
delete(p_name,1,i); //然后删去'.'前的字(包括'.'字符),并赋值给p_name
counter:=counter+1; //记数器累加
end;
for i:=1 to counter do //循环累加TAB值
r_name:=s+r_name; // 在r_name前添加TAB值
TabNum:=r_name; //将r_name值赋给TabNum,并返回调用点
end;
解决方案 »
- delphi的chart中的addxy函数的 问题
- 正在做一个共享软件,高手们请进来帮推荐几款免费的不错的第三方控件
- 我要打印image1,在FastReport中放了一个picture框,如何才能预览并打印,我用的是fr3
- 紧急求助!!!!怎样把从服务器端下载的AxtiveXform程序插件中的数据库组件连接到远程服务器端的数据库上??解决问题者给高分!!!
- 关于应用程序报错。
- 敬请给予帮助!
- 请问EasyTable是个什么东?
- 救命啊,又要不及格了!!!
- 怎样在菜单里加一条分隔线?
- 小问题(快来拿分啊!)
- 静态调用Dll的问题。。。(在线急等)
- 挑战高手: 什么是脱字号表达的字符------在线等待!(附:代码)
你这里是不是应该是p_name呢?
你的r_name始终没有赋值的呀!
Edit1.Text:=TabNum('abc.123.vby.yyy')+'abc.123.vby.yyy';这样可以看出效果来
测试:
s:=' '; //给s赋值为TAB值
b:= ' ';
if b = s then
showmessage('asdj');
for i:=1 to counter do //循环累加TAB值
r_name:= #9 + r_name; // 在r_name前添加TAB值
VK_TAB 09 TAB key
对用#9或VK_TAB试一下
procedure Tf_power.FormShow(Sender: TObject);
begin
writetext;
//buildtreedata;
end;
procedure Tf_power.WriteText;
var
f:textfile;
ss1:string;
begin
with dm_data.ClientDataSet_user do
begin
Active:=false;
Active:=true;
end;
Assignfile(f,'c:\111.txt');
Rewrite(f);
ss1:=TabNum(dm_data.ClientDataSet_user.Fields[2].AsString); //调用后的函数返回给ss1
while not dm_data.ClientDataSet_user.Eof do
begin
WriteLn(f,ss1+'('+dm_data.ClientDataSet_user.Fields[0].AsString+')'+dm_data.ClientDataSet_user.Fields[2].AsString); //在文本中添加节点编码和节点名称
dm_data.ClientDataSet_user.Next; //将Clientdataset的指针下移
end;
Closefile(f); //关闭文本文件
tv_user.LoadFromFile('c:\111.txt');
end;
function Tf_power.TabNum(parent_name:string):string;
var
counter,i:integer;
p_name,r_name:string;
begin
//s:=#9; //给s赋值为TAB值
r_name:=#32;
counter:=0;
p_name:=parent_name;
while (pos('.',p_name)<>0) do //判断父节点中是否还含有'.'字符
begin
i:=pos('.',p_name); //如果还含有'.',就将'.'的位置赋给变量i
delete(p_name,1,i); //然后删去'.'前的字(包括'.'字符),并赋值给p_name
counter:=counter+1; //记数器累加
end;
for i:=0 to counter-1 do //循环累加TAB值
r_name:=#9+r_name; // 在r_name前添加TAB值
TabNum:=r_name; //将r_name值赋给TabNum,并返回调用点
end;
请大家帮忙看看
(0101)aaa.ccc
(0102)aaa.ddd
(010201)aaa.ddd.fff
(02)bbb
(0201)bbb.eee
文本文件内的内容
qqqq
1111
2222
eeee
3333
对应的存储如下:
qqqq#13#10#091111#13#10#092222#13#10eeee#13#10#093333
r_name:= #13#10#9 + r_name; // 在r_name前添加TAB值
procedure Tf_power.WriteText;
var
f:textfile;
ss1:string;
begin
with dm_data.ClientDataSet_user do
begin
Active:=false;
Active:=true;
end;
Assignfile(f,'c:\111.txt');
Rewrite(f);
// ss1:=TabNum(dm_data.ClientDataSet_user.Fields[2].AsString);//,dm_data.ClientDataSet_user.Fields[0].AsString);
while not dm_data.ClientDataSet_user.Eof do
begin
ss1:=TabNum(dm_data.ClientDataSet_user.Fields[2].asstring); //调用后的函数返回给ss1
WriteLn(f,ss1+'('+dm_data.ClientDataSet_user.Fields[0].AsString+')'+dm_data.ClientDataSet_user.Fields[2].AsString); //在文本中添加节点编码和节点名称
dm_data.ClientDataSet_user.Next; //将Clientdataset的指针下移
end;
Closefile(f); //关闭文本文件
tv_user.LoadFromFile('c:\111.txt');
end;function Tf_power.TabNum(user_name:string):string;
var
i:integer;
p_name,r_name:string;
begin
r_name:='';
counter:=0;
p_name:=user_name;
while (pos('.',p_name)<>0) do //判断父节点中是否还含有'.'字符
begin
i:=pos('.',p_name); //如果还含有'.',就将'.'的位置赋给变量i
delete(p_name,1,i); //然后删去'.'前的字(包括'.'字符),并赋值给p_name
r_name:=#9+r_name; // 在r_name前添加TAB值
end;
TabNum:=r_name; //将s_name值赋给TabNum,并返回调用点
end;