毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

delphi高效的字符串替换函数

更新时间:2012-11-18:  来源:毕业论文

在做一个测试项目,用stringlist生成后,准备用ReplaceStr替换其中的回车和换行,但发现当用stringlist生成的字符串长度稍长,ReplaceStr的效率就直线下降,当字符串长度达到1M以上时,替换的等待时间就基本让人难以忍受了。
后在网上找了一些改进后的函数,如faststring单元等,但发现在xe下都已经不能正确替换了,
特向大家求助!

本人的代码如下:
当len=10000时,等待时间已经很长了。在程序中基本不能忍受。

function  getJsonData (len:Integer):string;
var
i:Integer;
  slist:TStringList;
  s_data:string;
  r_seed:Single;
  lng:Single;
  alt:Single;
  dt:Integer;
begin
slist:=TStringList.Create;
  Randomize;
for i := 0 to len do
  begin
r_seed:=Random(100000)/1000000;
lng:=r_seed;
  r_seed:=Random(10)/1000000;
    alt:=r_seed;
s_data:=format('{"c":1,"y":%2.6f,"x":%3.6f,"t":%d}',[lng,alt,DateTimeToUnix(now)]);
    slist.Add(s_data);
  end;
  s_data:=slist.Text;
  s_data:=ReplaceStr(s_data, #13#10, ',');
  Result:=StrUtils.LeftStr(s_data,Length(s_data)-1);
  slist.Free;

end;

for I := 0 to slist.Count - 1 dobegin  slist[I] := ReplaceStr(slist[I], #13#10, ',');   Application.ProcessMessages; end; {如果slist的每一行中并没有回车换行符的话可以不用上面的代码}slist.Delimiter := ','; Result := slist.DelimitedText;function getJsonData(Len:Integer):String; var  i , nCount , n : Integer;   s_data : string;   lng , alt : Single;   P : PChar; begin  if Len<0 then begin    Result := '';     exit;   end;   //s_data:=format('{"c":1,"y":%2.6f,"x":%3.6f,"t":%d},',[lng,alt,DateTimeToUnix(now)]);   //预估s_data最大长度<80   SetLength(Result , 80 * (Len+1));   P := Pointer(Result);   Randomize;   nCount := 0;   for i := 0 to Len do begin    lng    := Random(100000)/1000000;     alt    := Random(10)/1000000;     s_data := format('{"c":1,"y":%2.6f,"x":%3.6f,"t":%d},',[lng,alt,DateTimeToUnix(now)]);     //注意format的参数,格式描述中的最后多了一个, 也就是你最后想替换的那个     n      := Length(s_data);     Move(Pointer(s_data)^ , P^ , n*SizeOf(Char));     P      := P + n;     inc(nCount , n);   end;   SetLength(Result , nCount); end;

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。