anchor.diff:  begin
   //  Logger.EnterMethod(Self, 'InternalInitRecord');
     for I := 0 to Fields.Count - 1 do
  -    PVariantList(Buffer + SizeOf(TRecordInfo))[I]{$IFDEF FPC}[0]{$ENDIF} := 0;
  +    PVariantList(Buffer + SizeOf(TRecordInfo))[I] := 0; //{$IFDEF FPC}[0]{$ENDIF} := 0;
   //  Logger.ExitMethod(Self, 'InternalInitRecord');
   end;
   
  
positive.code:     ftGuid, ftFixedChar, ftString:
        begin
          PAnsiChar(ABuffer)[AField.Size] := #0;
          //ShowMessage(IntToStr(VarType(AVariant)));
          if (VarType(AVariant) = varString) or (VarType(AVariant) = varolestr) then
          begin
            Size                     := Min(Length(AVariant), AField.Size);
  
negative.code:             PAnsiChar(ABuffer)[0] := #0
            else
            begin
  //            ShowMessage(VarTypeAsText(AVariant));
  //            ShowMessage(IntToStr(integer(VarType(aVariant))));
              {$IFDEF FPC}
              PAnsiChar(ABuffer)[0] := #0;
  //            else
  //              raise Exception.Create('not supported');
              {$ELSE}
              WideCharToMultiByte(0, 0, tagVariant(AVariant).bStrVal,
                Size + 1, ABuffer,
  