anchor.diff:      FLastValue: String;
     end;
   
  +  PJsonBuffer = ^TJsonBuffer;
  +  TJsonBuffer = record
  +    FBuffer:TStream;
  +    FLevel:Integer;
  +    FState:Integer;  // 0 search begin, 1, search end, 2: String, 3: escape
  +    FBeginChr: array [0..32] of Byte;
  +    FEndChr: array [0..32] of Byte;
  +    FStringEndChr:Byte;
  +
  +  end;
  +
   function JSONParser(s: string; pvDValue: TDValue): Integer;
   function JSONEncode(v: TDValue; ADoEscape: Boolean = true; ADoFormat: Boolean =
       true; pvExceptValueTypes: TDValueDataTypes = [vdtInterface, vdtObject,
  
positive.code:   WriteStringToUtf8NoBOMFile(pvFile, s);
  end;
  
  end.
  
negative.code: 
  function JSONParseFromUtf8NoBOMFile(pvFile:string; pvDValue:TDValue): Integer;
  procedure JSONWriteToUtf8NoBOMFile(pvFile:string; pvDValue:TDValue);
  
  function InputJsonBuffer(const jsonBuffer:PJsonBuffer; pvByte:Integer): Integer;
  procedure ResetJsonBuffer(const jsonBuffer:PJsonBuffer);
  
  
      
  