转做builder以来常常会用到TListString 这个控件来完成字符分隔的工作,用法很简单,很方便,但是今天的这段代码却没有达到预期的效果。
Stirng str = "a,b,c,d;e,f,g;"
TStringList * lst = new TStringList();
lst->DelimitedText = str;
lst->Delimiter = ';';
for(int i =0;i<lst->Count;i++)
{
TStringList * lst2 = new TStringList();
lst2->DelimitedText = str;
lst2->Delimiter = ',';
Memo1->Lines->Add(lst->Strings[i]);
delete lst2;
}
delete lst;
结果总是输出
a
b
c
d;
e
f
g
悲剧了一上午!因为知道默认的分隔符是',',所以也尝试换掉','改用'|'果然输出结果对了,就是不能用','。
为什么呢?以前用就没这样,无奈翻出以前的代码看了一下,区别就是上面蓝色的两行代码的顺序不同,难道是因为执行的顺序不同产生了不同的效果?
将两行代码的顺序一换,果然运行结果正确了。
真是没想到,这个顺序这么重要,记下来省得下次又掉到这个沟里。