procedure TForm1.btn2Click(Sender: TObject);
var
vlist:TStringList;
i:Integer;
a,b,c:string;
p,j:integer;
const
s ='a(bc),def(ghk)'; //括号和逗号都是中文输入法输入的。
begin
vlist:= TStringList.Create;
c:= ',';// 逗号是中文输入法输入的。
vlist.Delimiter:= c[1];
vlist.DelimitedText:= s;
ShowMessage(vlist.DelimitedText);
ShowMessage(IntToStr(vlist.Count));
for i:= 0 to vlist.Count - 1 do
begin
a:= vlist.Strings[i];
ShowMessage(a);
end;
end;
现在想把s分成'abc','defghk'.但这个结果是'a','bc','','def','ghk','',非常奇怪,请高手来看看。
var
vlist:TStringList;
i:Integer;
a,b,c:string;
p,j:integer;
const
s ='a(bc),def(ghk)'; //括号和逗号都是中文输入法输入的。
begin
vlist:= TStringList.Create;
c:= ',';// 逗号是中文输入法输入的。
vlist.Delimiter:= c[1];
vlist.DelimitedText:= s;
ShowMessage(vlist.DelimitedText);
ShowMessage(IntToStr(vlist.Count));
for i:= 0 to vlist.Count - 1 do
begin
a:= vlist.Strings[i];
ShowMessage(a);
end;
end;
现在想把s分成'abc','defghk'.但这个结果是'a','bc','','def','ghk','',非常奇怪,请高手来看看。
解决方案 »
- Mdi的主窗体上放了dbgrid控件后,总是覆盖子窗体,如何解决?
- 用DBgrid录入的问题?在线等!在线等!在线等!在线等!在线等!在线等!在线等!在线等!在线等!在线等!
- delphi 中指针变量如何释放(本人菜鸟)
- 谁有TOutLookBar的帮助文档~~~分不够再加!
- Delphi大联盟-(最好的讨论,求助QQ群 号码:1463857)
- idsmtp和idmessage的问题,急请高手指点!!
- 简单的问题,但很急!!!!!!
- 结贴迅速!送分!
- 怎样获得一台机子上的程序数(不是进程数)???
- mwEdit如何支持中文?
- delphi内存泄露,请帮忙,提示为out of memory
- delphi 收缩控件和隐藏控件的名字
只是将中文逗号的低位作为了分隔符,而不是中文“,”,所以出现这种上述情况。
TStringList不支持中文的Delimiter,自己写个解析函数吧。
只是将中文逗号的低位作为了分隔符,而不是中文“,”,所以出现这种上述情况。
TStringList不支持中文的Delimiter,自己写个解析函数吧。
var
vlist:TStringList;
i:Integer;
a,b,c:string;
p,j:integer;
s1: string;
const
s ='a(bc),def(ghk)'; //括?和逗?都是中文?入法?入的。
begin
vlist:= TStringList.Create;
s1 := '';
i := 1;
while i <= Length(s) do
if (Copy(s, i, 2) = '(') or (Copy(s, i, 2) = ')') then
Inc(i, 2)
else if (Copy(s, i, 2) = ',') then
begin
vlist.Add(s1);
s1 := '';
Inc(i, 2);
end
else
begin
s1 := s1 + s[i];
Inc(i);
end;
vlist.Add(s1); Memo1.Lines.Add(vlist.DelimitedText);
Memo1.Lines.Add(IntToStr(vlist.Count));
for i:= 0 to vlist.Count - 1 do
begin
a:= vlist.Strings[i];
Memo1.Lines.Add(a);
end;
end;
var
vlist:TStringList;
i:Integer;
a,b,c:string;
p,j:integer;
const
s ='a(bc),def(ghk),asfasfa'; //括?和逗?都是中文?入法?入的。
begin
vlist:= TStringList.Create;
try
Parse(s, vlist);
Memo1.Lines.Add(vlist.DelimitedText);
Memo1.Lines.Add(IntToStr(vlist.Count));
for i:= 0 to vlist.Count - 1 do
begin
a:= vlist.Strings[i];
Memo1.Lines.Add(a);
end;
finally
vlist.Free;
end;
end;procedure TForm1.Parse(const s: string; slRsult: TStringList);
var
i:Integer;
s1: string;
begin
s1 := '';
i := 1;
while i <= Length(s) do
if (Copy(s, i, 2) = '(') or (Copy(s, i, 2) = ')') then
Inc(i, 2)
else if (Copy(s, i, 2) = ',') then
begin
slRsult.Add(s1);
s1 := '';
Inc(i, 2);
end
else
begin
s1 := s1 + s[i];
Inc(i);
end;
slRsult.Add(s1);
end;