anchor.diff:  function StrHex(I: Integer): String;
   function IntStr(S: String): Integer;
   function StrBlockClean(S: array of Char; Start, Len: Integer): String;
  +function StrYesNo(IsEmpty: Boolean): String;
  +function StrInByteArray(ByteArray: array of byte; SubString: String; Start: Integer): Boolean;
  +
   function CompareBlock(A: array of Char; B: String): Boolean;
   function CompareBlockStart(A: array of Char; B: String; Start: Integer): Boolean;
  -procedure DrawBorder(Canvas: TCanvas; var Rect: TRect; BorderStyle: TSpinBorderStyle);
  +
   function FontToDescription(ThisFont: TFont): String;
   function FontFromDescription(Description: String): TFont;
   function FontDescription(ThisFont: TFont): String;
   function FontCopy(ThisFont: TFont): TFont;
  -function StrYesNo(IsEmpty: Boolean): String;
  -
  -function StringInByteArray(ByteArray: array of byte; SubString: String; Start: Integer): Boolean;
   
   function FingerPrintFile(FileName: TFileName): String;
  +
  +procedure DrawBorder(Canvas: TCanvas; var Rect: TRect; BorderStyle: TSpinBorderStyle);
   
   implementation
   
  
positive.code:   OTL, ITL, OBR, IBR: TColor;
  begin
    case BorderStyle of
       bsLowered:
       begin
          OTL := clBtnShadow;
          ITL := cl3DDkShadow;
          IBR := cl3DLight;
          OBR := clBtnHighlight;
       end;
       bsRaised:
       begin
          OBR := clBtnShadow;
          IBR := cl3DDkShadow;
          OTL := clBtnHighlight;
          ITL := cl3DLight;
       end;
       else
          exit;
    end;
    with Canvas do
    begin
       dec(Rect.Bottom);
       dec(Rect.Right);
       Pen.Color := OTL;
       MoveTo(Rect.Left, Rect.Bottom);
       LineTo(Rect.Left, Rect.Top);
       LineTo(Rect.Right, Rect.Top);
  
       Pen.Color := OBR;
       LineTo(Rect.Right, Rect.Bottom);
       LineTo(Rect.Left, Rect.Bottom);
       InflateRect(Rect,-1,-1);
  
       Pen.Color := ITL;
       MoveTo(Rect.Left, Rect.Bottom);
       LineTo(Rect.Left, Rect.Top);
       LineTo(Rect.Right, Rect.Top);
  
       Pen.Color := IBR;
       LineTo(Rect.Right, Rect.Bottom);
       LineTo(Rect.Left, Rect.Bottom);
       inc(Rect.Top);
       inc(Rect.Left);
    end;
  end;
  
  
negative.code: function StrYesNo(IsEmpty: Boolean): String;
  begin
    if IsEmpty then
    	Result := 'Yes'
    else
    	Result := 'No';
  end;
  
  function StrInByteArray(ByteArray: array of Byte; SubString: String; Start: Integer): Boolean;
  var
  	Idx, Last: Integer;
  begin
  