diff --git a/packages/fcl-db/src/base/xmldatapacketreader.pp b/packages/fcl-db/src/base/xmldatapacketreader.pp index d330daeac7..40ec894050 100644 --- a/packages/fcl-db/src/base/xmldatapacketreader.pp +++ b/packages/fcl-db/src/base/xmldatapacketreader.pp @@ -306,7 +306,8 @@ end; procedure TXMLDatapacketReader.InitLoadRecords; var ChangeLogStr : String; - i,cp : integer; + C, StartC : PChar; + cp : integer; ps : string; begin @@ -319,12 +320,17 @@ begin ChangeLogStr:=''; ps := ''; cp := 0; - if ChangeLogStr<>'' then for i := 1 to length(ChangeLogStr)+1 do - begin - if not (ChangeLogStr[i] in [' ',#0]) then - ps := ps + ChangeLogStr[i] - else + if ChangeLogStr='' then + Exit; + + C := PChar(ChangeLogStr); + StartC := C; + repeat + if (C^ in [' ',#0]) then begin + SetLength(ps, C-StartC); + if Length(ps)>0 then + Move(StartC^, ps[1], C-StartC); case (cp mod 3) of 0 : begin SetLength(FChangeLog,length(FChangeLog)+1); @@ -340,10 +346,11 @@ begin FChangeLog[cp div 3].UpdateKind:=ukModify; end; end; {case} - ps := ''; inc(cp); + StartC := C+1; end; - end; + Inc(C); + until C^=#0; end; procedure TXMLDatapacketReader.RestoreRecord;