您的位置:首页 > 编程语言 > Delphi

Delphi总结使用TStrings的一些技巧

2014-01-10 17:05 375 查看
[delphi] view
plaincopyprint?





先把要讨论的几个属性列出来:  

1、CommaText  

2、Delimiter & DelimitedText  

3、Names & Values & ValueFromIndex   

先看第一个:CommaText。怎么用呢?用代码说话:  

const  

  constr :String = 'aaa,bbb,ccc,ddd';  

var  

  strs :TStrings;  

  i :Integer;  

begin  

  strs := TStringList.Create;  

  strs.CommaText := constr;  

  for i := 0 to Strs.Count-1 do  

    ShowMessage(Strs[i]);  

end;  

执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。  

也就是说,strs.CommaText := constr这一句的作用,就是把一个字符串以'',''为分割符,分段添加到TStrings中。  

那么如果不是以'',''来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。  

const  

  constr :String = 'aaa\bbb\ccc\ddd';  

var  

  strs :TStrings;  

  i :Integer;  

begin  

  strs := TStringList.Create;  

  strs.Delimiter := '\';  

  strs.DelimitedText := constr;  

  for i := 0 to Strs.Count-1 do  

    ShowMessage(Strs[i]);  

end;  

可以看到, 显示的效果和第一个例子是一模一样的。解释一下:  

Delimiter为分隔符,默认为:'',''。DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后会把这个字符串按Delimiter的字符添加到TStrings中。  

说到这里,有想起一个属性,QuoteChar。其默认值为:''"''(不包括单引号)  

有何用呢?看例子:  

const  

  constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';  

var  

  strs :TStrings;  

  i :Integer;  

begin  

  strs := TStringList.Create;  

  strs.Delimiter := '\';  

  strs.DelimitedText := constr;  

  for i := 0 to Strs.Count-1 do  

    ShowMessage(Strs[i]);  

end;  

显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?  

再来看一个例子:  

const  

  constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';  

var  

  strs :TStrings;  

  i :Integer;  

begin  

  strs := TStringList.Create;  

  strs.Delimiter := '\';  

  strs.QuoteChar := '|';  

  strs.DelimitedText := constr;  

  for i := 0 to Strs.Count-1 do  

    ShowMessage(Strs[i]);  

end;  

显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。  

但是还要多说一句,当Delimiter为:'',''而QuoteChar为:''"''时,DelimitedText和CommaText是同等的。  

最后要说的三个是:Names & Values & ValueFromIndex。  

看看下面的代码:  

const  

  constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';  

var  

  strs :TStrings;  

  i :Integer;  

begin  

  strs := TStringList.Create;  

  strs.CommaText := constr;  

  for i := 0 to strs.Count-1 do  

  begin  

    ShowMessage(strs.Names[i]);  

    ShowMessage(strs.Values[strs.Names[i]]);  

    ShowMessage(strs.ValueFromIndex[i]);  

  end;  

end;  

通过这个例子不难看出:  

这个时候strs中的内容是:  

0=aaa  

1=bbb  

2=ccc  

3=ddd  

而Names中则是:  

0  

1  

2  

3  

在Values中则是:  

aaa  

bbb  

ccc  

ddd  

这几个属性用来处理ini文件是非常好用的。  

另外说一句,在Delphi6下似乎没有ValueFromIndex这个属性  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: