101*3*102*1*103*0*104*3*105*1*106*0*107*3*108*1*109*0*110*3*111*1*112*
0*001000怎样才可以将上面的字符串以*为条件将它分开,并得到相应的数值??
注:上面的字符长度不定,但格式相同。
如:101*3*102*1*103*0*104*3
105*3*102*1*103*0*104*3
105*0*108*1*103*0*104*3
等.
0*001000怎样才可以将上面的字符串以*为条件将它分开,并得到相应的数值??
注:上面的字符长度不定,但格式相同。
如:101*3*102*1*103*0*104*3
105*3*102*1*103*0*104*3
105*0*108*1*103*0*104*3
等.
function PosString(PosValue :Byte;str :string;ToKen :string):TStrings;
自己写这个函数吧
ArrValue : Array of String;procedure TfrmQYFB.MultiCount(sign : String; s : String);
var
iStart,iEnd,sLeng,i,ArrayLeng : Integer;
vArray : Array of Integer;
begin
sLeng := Length(s);
setLength(vArray,sLeng);
ArrayLeng := 0;
for i := 0 to sLeng do
begin
if Copy(s,i,1) = sign then
begin
vArray[Arrayleng] := i;
ArrayLeng := ArrayLeng + 1;
end;
end;
i := pos(sign,s);
vArray[ArrayLeng] := sLeng+1;
setLength(ArrValue,ArrayLeng);
sLeng := ArrayLeng - 1;
iStart := 1;
iEnd := i -1;
ArrayLeng := 0;
for i :=0 to sLeng do
begin
ArrValue[ArrayLeng] := Copy(s,iStart,iEnd);
ArrayLeng := ArrayLeng + 1;
iStart := vArray[i]+1;
iEnd := vArray[i+1]-iStart;
end;
end;调用的时候用MultiCount(“*”,s);过程结束后所有的字符串都存在ArrValue数组中了!
对ArrValue做循环就可以了!
var temp,s:string;
begin
S:='101*3*102*1*103*0*104*3*105*1*106*0*107*3*108*1*109*0*110*3*111*1*112*0*111';
while pos('*',s)<>0 do
begin
ListBox1.Items.Add(leftstr(s,pos('*',s)-1));
temp:=copy(s,pos('*',s)+1,length(s)-pos('*',s)+1);
s:=temp;
end;
ListBox1.Items.Add(s);
end;
ListBox1.Items.Delimiter :='*';
ListBox1.Items.DelimitedText:='101*3*102*1*103*0*104*3*105*1*106*0*107*3*108*1*109*0*110*3*111*1*112*0*111';
end;