一串字符串'abce*1234*jfid*'....很长
如何把*号前面的字符串分别都加入到comboBox中呢? 第一行是'abce'
第二行是'1234'
第三行是'jfid'
第四行是.....
第五行是.....
如何把*号前面的字符串分别都加入到comboBox中呢? 第一行是'abce'
第二行是'1234'
第三行是'jfid'
第四行是.....
第五行是.....
解决方案 »
- 请教如何编写多线程下的tcp服务器接收?
- 如果安装编译好的服务程序install语句怎么写
- !!!长期招聘Delphi程序员、项目经理...(北京)!!!
- 谁能告诉我TDWindow和TDButton是哪类控件中的类,100分相送
- 做软件的自动演示用什么工具?各位大侠快点帮帮我啊!急、、、
- 如何确定流(stream)中的数据是bmp还是jpeg
- 关于不同构件的Socket通信问题!
- 怎样解决DCOM的连接速度慢的问题啊?
- 如何去掉图片的底色
- 建立了三个listview,怎么实现三个控件的滚动条同步滚动?
- 请教一个很简单的问题:关于查询数据,adoconnection和adoquery.
- 请教一个关于事务的问题,困扰了很久
var s:string;
m,st,sl:string;
i,j:integer;
ss:array[0..100] of string;
begin
s:='1234*5678*9999*3333*';
sl:='';
j:=0;
for i:=1 to length(s) do begin
m:=midstr(s,i,1);
if m='*' then
begin
st:=sl;
sl:='';
ss[j]:=st;
j:=j+1;
end
else
begin
sl:=sl + m;
end; end; combobox1.Clear ;
for i:=0 to j-1 do begin
combobox1.Items.Add(ss[i]);
end;
end;
var
iTemp: integer;
begin
result := TStringList.Create;
iTemp := pos(PrtSymbol,StrV);
while iTemp>0 do begin
if iTemp>1 then result.Append(copy(StrV,1,iTemp-1));
delete(StrV,1,iTemp+length(PrtSymbol)-1);
iTemp := pos(PrtSymbol,StrV);
end;
if Strv<>'' then result.Append(StrV);
end;你调用上面的函数就可以了。
ksaiy(真爱不是取代,而是心中永恒的存在) ( ) 的方法要快1点而且分隔符可以是字符串。
因为我刚好要实现一个类似的功能。谢谢了。
我改写成如下过程:
procedure PartitionString(StrV,PrtSymbol:string;strList:TStrings;KillBlack:Boolean=True);
var
iTemp: integer;
begin
strList.Clear;
iTemp := pos(PrtSymbol,StrV);
while iTemp>0 do begin
if iTemp>1 then
begin
if KillBlack then
StrList.Append(Trim(copy(StrV,1,iTemp-1)))
else
StrList.Append(Copy(StrV,1,iTemp-1));
end;
delete(StrV,1,iTemp+length(PrtSymbol)-1);
iTemp := pos(PrtSymbol,StrV);
end;
if KillBlack then
if Trim(Strv)<>'' then
StrList.Append(Trim(StrV))
else if StrV<>'' then
StrList.Append(StrV);
end;测试方法:
procedure TForm1.Button2Click(Sender: TObject);
var
I:Cardinal;
begin
I:=GetTickCount;
PartitionString(Memo1.Text,Edit2.Text,ListBox1.Items,CheckBox1.Checked);
ShowMessage(IntToStr(GetTickCount-I));
end;
以前是用POS(),COPY()
procedure TForm1.FormCreate(Sender: TObject);
var
ll:tstringlist;
i:integer;
begin
ll:=tstringlist.Create ;
try
ll.Delimiter :='*';
ll.DelimitedText :='123*456*789';
for i:=0 to ll.Count-1 do
begin
cmb.Items.Add(ll.Strings[i])
end;
except
freeandnil(ll);
end;
end;
var
S: String;
begin
S:='1+2';
for i:=0 to Length(S) do
if S[i]='+' then ...
for i:=0 to Length(S) do //改为==>
for i:=1 to Length(S)// 注意.字符串的 下标 是从1开始的.