delphi7 RealThinClient-5.15 rtcFastStrings.pas 单元改进
function TRtcHugeString.Get: AnsiString; var a,b,loc:integer; FPack2:PRtcStrArr; begin if FCount>1 then begin SetLength(Result, FSize); loc:=1; for a:=0 to FDataCnt-1 do begin FPack2:=FData[a]; for b:=0 to RTC_STROBJ_PACK-1 do with FPack2^[b] do begin Move(str[1], Result[loc], siz); Inc(loc, siz); end; end; for b:=0 to FPackCnt-1 do with FPack^[b] do begin Move(str[1], Result[loc], siz); Inc(loc, siz); end; if loc<>FSize+1 then raise Exception.Create('Internal Huge AnsiString error.'); end else if FCount>0 then begin with FPack^[0] do begin
// Result := str; //fix out of momery 这里可以判断一下len 大于=255 在add是直接给str 如果长度过长会out of momery
SetLength(Result, siz); Move(str[1], Result[1], siz); end; end else Result:=''; end;
在 else if FCount>0 then 的处理是直接result := str 如果长度过长会out of momery

浙公网安备 33010602011771号