Browse Source

db xmldatapacketreader: don't use PChar in InitLoadRecords

Ondrej Pokorny 3 years ago
parent
commit
b28adbad5f
1 changed files with 9 additions and 15 deletions
  1. 9 15
      packages/fcl-db/src/base/xmldatapacketreader.pp

+ 9 - 15
packages/fcl-db/src/base/xmldatapacketreader.pp

@@ -306,8 +306,7 @@ end;
 procedure TXMLDatapacketReader.InitLoadRecords;
 procedure TXMLDatapacketReader.InitLoadRecords;
 
 
 var ChangeLogStr : String;
 var ChangeLogStr : String;
-    C, StartC    : PChar;
-    cp           : integer;
+    I, StartI, cp: integer;
     ps           : string;
     ps           : string;
 
 
 begin
 begin
@@ -320,17 +319,13 @@ begin
     ChangeLogStr:='';
     ChangeLogStr:='';
   ps := '';
   ps := '';
   cp := 0;
   cp := 0;
-  if ChangeLogStr='' then
-    Exit;
-
-  C := PChar(ChangeLogStr);
-  StartC := C;
-  repeat
-    if (C^ in [' ',#0]) then
+  StartI := 1;
+  if ChangeLogStr<>'' then
+  for I := 1 to Length(ChangeLogStr)+1 do
+    begin
+    if (I>Length(ChangeLogStr)) or (ChangeLogStr[I] in [' ',#0]) then
       begin
       begin
-      SetLength(ps, C-StartC);
-      if Length(ps)>0 then
-        Move(StartC^, ps[1], C-StartC);
+      ps := Copy(ChangeLogStr, StartI, I-StartI);
       case (cp mod 3) of
       case (cp mod 3) of
         0 : begin
         0 : begin
             SetLength(FChangeLog,length(FChangeLog)+1);
             SetLength(FChangeLog,length(FChangeLog)+1);
@@ -347,10 +342,9 @@ begin
             end;
             end;
       end; {case}
       end; {case}
       inc(cp);
       inc(cp);
-      StartC := C+1;
+      StartI := I+1;
       end;
       end;
-    Inc(C);
-  until C^=#0;
+    end;
 end;
 end;
 
 
 procedure TXMLDatapacketReader.RestoreRecord;
 procedure TXMLDatapacketReader.RestoreRecord;