anchor.diff:      function Count : integer;
       function Get (const aIndex : integer) : TmFormulaField;
       function FindByName (const aName : string) : TmFormulaField;
  +    procedure Delete (aName : string);
  +    procedure Clear;
     end;
  +
  +  function FromTmFormulaFieldTypeToTFieldType (const aSource : TmFormulaFieldType) : TFieldType;
  +  function TmFormulaFieldTypeToString(const aSource : TmFormulaFieldType) : string;
  +  function StringToTmFormulaFieldType(const aValue : string): TmFormulaFieldType;
   
   implementation
   
   uses
     sysutils;
  +
  +function FromTmFormulaFieldTypeToTFieldType(const aSource: TmFormulaFieldType): TFieldType;
  +begin
  +  if aSource = fftFloat then
  +    Result := ftFloat
  +  else if aSource = fftDateTime then
  +    Result := ftDateTime
  +  else
  +    Result := ftString;
  +end;
  +
  +function TmFormulaFieldTypeToString(const aSource: TmFormulaFieldType): string;
  +begin
  +  if aSource = fftFloat then
  +    Result := 'float'
  +  else if aSource = fftDateTime then
  +    Result := 'datetime'
  +  else
  +    Result := 'string';
  +end;
  +
  +function StringToTmFormulaFieldType(const aValue: string): TmFormulaFieldType;
  +begin
  +  if aValue = 'float' then
  +    Result := fftFloat
  +  else if aValue = 'datetime' then
  +    Result := fftDateTime
  +  else Result := fftString;
  +end;
   
   { TmFormulaFields }
   
  
positive.code: interface
  
  uses
    Classes, contnrs,
    mVirtualFieldDefs, StrHashMap;
  
  type
  
    { TmFormulaField }
  
    TmFormulaField = class
    strict private
      FDataType : TVirtualFieldDefType;
      FSize : integer;
      FFormula : String;
      FName : string;
  
negative.code: 
  constructor TmFormulaField.Create;
  begin
    FDataType:= fftFloat;
    FSize := 0;
    FName := '';
    FOnChangeName:= nil;
  