谁能帮我把这个 delphi的函数翻成 在C++Builder6里可用的函数(30分)

  • 主题发起人 主题发起人 葬月
  • 开始时间 开始时间

葬月

Unregistered / Unconfirmed
GUEST, unregistred user!
如'111222=333444=555666'根据'='可以分割为
111222
333444
555666
的TStrings
function SplitString(const source,ch:string):TStrings;
var
temp:string;
i:integer;
begin
result:=TStringlist.Create;
temp:=source;
i:=pos(ch,source);
//得到第一个分割的标识字符串的位置
while i<>0do
begin
result.Add(copy(temp,0,i-1));
//copy能够将分割字符前面的字符串添加到result
delete(temp,1,i);
//delete 将第一个分割字符前面(包括分割字符串)的字符串删除
i:=pos(ch,temp);
//重新得到i
end;
result.Add(temp);
end;
 
AnsisString SplitString(const AnsiString source,AnsiString ch)
{
AnsiString temp;
int i;
TStringList result= new TStringList(AOwner);
temp=source;
i = ch.pos(source);
while(i != 0)
{
sl_res->Add(temp.SubString(0,i-1));
...
result->Add(temp);
}
delete result;
return
}
看到临时写的,没有经过实证,大体是这样吧!:(
我明天再试试
 
TStringList* SplitString(AnsiString source,AnsiString ch)
{
AnsiString temp;
int i;
TStringList* result=new TStringList;
temp=source;
i=ch.Pos(source);
//得到第一个分割的标识字符串的位置
while( i!=0 )
{
result->Add(temp.SubString(0,i-1));
//copy能够将分割字符前面的字符串添加到result
temp.Delete(1,i);
//delete 将第一个分割字符前面(包括分割字符串)的字符串删除
i=ch.Pos(temp);
//重新得到i
end;
result->Add(temp);
return result;
end;

关键是,调用SplitString得到的TStringList*指针用完之后要delete掉,比如
TStringList* r=SplitString('aaaa-aaa','-');
用完了r之后
delete r;
 
Pipi有两处地方错了, 不过我改过来就能用了
 
后退
顶部