用pos和copy两个函数就可以解决。
var
lsOriginalString:string;
laOutputString:array of string;
TempString:string;TempInteger:integer;
i:integer;
begin
lsOriginalString:='abc;xyz;mn';
i:=0;
TempString:=lsOriginalString;
TempInteger:=pos(';',TempString);
while TempInteger<>0 do begin
SetLength(laOutputString,i+1)
laOutputString[i]:=copy(TempString,1,TempInteger-1);
TempString:=copy(TempString,TempInteger+1,length(TempString));
TempInteger:=pos(';',TempString);
i:=i+1;
end;
end;
以上代码没有试过,一定有问题,不过,意思大概是这样。
function TForm1.GetParam(AStr:string;AToken:Char;ANum:integer):string;
var
I:integer;
offset,MaxLen:integer;
Num:integer;
begin
Num:=1;
I:=1;
offset:=1;
Result:=AStr;
MaxLen:=Length(AStr);
while offset<=MaxLen do
begin
if AStr[Offset]=AToken then //这里的阿Atoken是逗号,分号你自己去查,我没时间了!
begin
if (Num=ANum) then break;
I:=1;
Inc(Num);
end
else
begin
Result[I]:=AStr[Offset];
Inc(I);
end;
Inc(Offset);
end;
if (Num=ANum) then SetLength(Result,I-1)
else Result:='';
end;
var
buf:tstrings;
buf:=SplitString('abc;xyz;mn',';');
str[0]:=buf.strings[0];
.......
function SplitString(const source,ch:string):tstringlist;
var
temp:string;
i:integer;
begin
result:=tstringlist.Create;
temp:=source;
i:=pos(ch,source);
while i<>0 do
begin
result.Add(copy(temp,0,i-1));
delete(temp,1,i);
i:=pos(ch,temp);
end;
result.Add(temp);
end;