比如有一个
str_arr:array of String;
str:String;setlength(str_arr,1000000);
....
....(对str_arr每一个单元赋了值)
....现在想把str_arr里的值放到str字符串里,如何放?
我用如下方法,但是太慢了.
for i:=0 to (length(str_arr)-1) do
str:=str + str_arr[i];有没有快一点的方法。我之所以要把数组放在一个字符串里,是因为我想把str_arr的值赋给Memo,但是Memo的add方法只支持String,不支持array of String,若有把array of String放在Memo里的方法那就更好了!请大家帮忙了,谢谢!
str_arr:array of String;
str:String;setlength(str_arr,1000000);
....
....(对str_arr每一个单元赋了值)
....现在想把str_arr里的值放到str字符串里,如何放?
我用如下方法,但是太慢了.
for i:=0 to (length(str_arr)-1) do
str:=str + str_arr[i];有没有快一点的方法。我之所以要把数组放在一个字符串里,是因为我想把str_arr的值赋给Memo,但是Memo的add方法只支持String,不支持array of String,若有把array of String放在Memo里的方法那就更好了!请大家帮忙了,谢谢!
i,iLen: Integer;
str_arr: array of String;
str: String;
p: PChar;
...
begin
...
iLen := 0;
for i := 0 to Length(str_arr) do
Inc(iLen,Length(str_arr[i]);
SetLength(str,iLen);
p := PChar(str);
for i := 0 to Length(str_arr) do begin
iLen := Length(str_arr[i]);
Move(PChar(str_arr[i])^, p^, iLen);
Inc(p,iLen);
end;
...
end;
tls: TStringList;
begin
tls := TStringList.Create;
try
//设置Capacity进行一次性内存分配
tls.Capacity := 1000000; tls.Add(...)
... finally
tls.Free;
end;
end;