anchor.diff:        // Format functions
         if SourceTxt[i+iPlus].StartsWith('function') and not (versionStr = '') then
         begin
  -        restStr := ' | ' + SourceTxt[i+iPlus].Substring(SourceTxt[i+iPlus].IndexOf('.') + 1);
  -        Delete(restStr, restStr.LastIndexOf(':')+1, restStr.Length);
  -        restStr := ReplaceStr(restStr, 'Proc', 'On');
  -
  -        if restStr.Contains('(') then
  -        begin
  -          restStr := ReplaceStr(restStr, '(', descStr + ' | `');
  -          restStr := restStr.TrimRight([')', ';']) + '` | `';
  +        if SourceTxt[i+iPlus].Contains('(') then
  +        begin
  +          restStr := ' | ' + Copy(SourceTxt[i+iPlus], SourceTxt[i+iPlus].IndexOf('.') + 2,
  +                                  SourceTxt[i+iPlus].IndexOf('(') - (SourceTxt[i+iPlus].IndexOf('.') + 1));
  +          restStr := ReplaceStr(restStr, 'Func', 'On');
  +          restStr := restStr + descStr + ' | ' + paramParser(Copy(SourceTxt[i+iPlus], SourceTxt[i+iPlus].IndexOf('(') + 2,
  +                                                                  SourceTxt[i+iPlus].IndexOf(')') - (
  +                                                                  SourceTxt[i+iPlus].IndexOf('(') + 1))) + ' | ';
  +          restStr := restStr.TrimRight([')', ';']) + ' | ';
           end else
  -          restStr := restStr + descStr + ' | | `';
  +        begin
  +          restStr := ' | ' + Copy(SourceTxt[i+iPlus], SourceTxt[i+iPlus].IndexOf('.') + 2,
  +                                  SourceTxt[i+iPlus].IndexOf(':') - (SourceTxt[i+iPlus].IndexOf('.') + 1));
  +          restStr := ReplaceStr(restStr, 'Func', 'On');
  +          restStr := restStr + descStr + ' | | ';
  +        end;
   
           restStr  := restStr + SourceTxt[i+iPlus].Substring(SourceTxt[i+iPlus].LastIndexOf(':') + 2);
  -        restStr  := restStr.TrimRight([';']) + '` |';
  +        restStr  := restStr.TrimRight([';']) + ' |';
           finalStr := versionStr + restStr;
         end;
   
  
positive.code:     if FileExists(edtActionsFile.Text) then
      begin
        fListActions.Clear;
        fListActions.Add('##Actions' + sLineBreak);
        txtParser(edtActionsFile.Text, fListActions);
        txtParserOutput.Lines.AddStrings(fListActions);
      end else
  
negative.code:     fListActions, fListEvents, fListStates: TStringList;
      fSafeToWrite: Boolean;
      procedure txtParser(aFile: String; aList: TStringList);
      function paramParser(aString: String): String;
    end;
  
    tParamHolder = Record
      Name: String;
      varType: Integer;
    end;
  
  const
    VAR_TYPES: array[0..39] of String = (
      'Byte', 'Shortint', 'Smallint', 'Word', 'Integer', 'Cardinal', 'Longint',
      'Longword', 'Int64', 'QWord', 'Real', 'Single', 'Double', 'Extended',
      'Currency', 'TByteSet', 'Boolean', 'ByteBool', 'WordBool', 'LongBool',
      'Char', 'WideChar', 'PChar', 'String', 'AnsiString', 'UnicodeString',
      'TKMHandIndex', 'TKMHouse', 'TKMUnit', 'TKMUnitGroup',
      'TKMHouseType', 'TKMWareType', 'TKMFieldType', 'TKMUnitType',
      'THouseType', 'TWareType', 'TFieldType', 'TUnitType',
      'array of const', 'array of Integer'
    );
  
  var
    Form1: TForm1;
  