Monthly Archives: February 2017

[Pascal Error] YourUnit.pas(224): E2015 Operator not applicable to this operand type

I’ve got this error when was concatinating stings to build pl/sql call. Here’s an example code:

      sql := 'begin '  +
        packageName + '.calc_report(' +
          ' in_dateend=>to_date('''+ LMRFrm.a_Date2_i + ''',''dd/mm/yyyy''),' +
          ' in_code_list=>''' + LMRFrm.a_ListCat_i + ''',' +
          ' in_currency=>''' + LMRFrm.a_currency + ''',' +
          ' in_kr=>''' + LMRFrm.a_kr + ''',' +
          ' in_vseason=>''' + LMRFrm.a_season + ''',' +
          ' in_level=>''' + IfThen( ( 1 = LMRFrm.a_family_agg ), 'FAMILYSC', 'SC' ) + ''',' +
          ' in_filter=>''' + LMRFrm.a_filter + ''',' +
          ' in_report_code=>''' + LMRFrm.a_tpl_code + ''',' +
          ' in_version=>''' + IfThen( _useDevPackage , 'DEV' , 'PROD' ) + ''',' +
          ' in_week_data=>''' + IfThen( ( 1 = LMRFrm.a_week_data) , 'WEEK_DATA ', '' ) + IfThen( ( '1' = LMRFrm.a_show_sparks ), 'TRENDS ', '' ) +  IfThen( ( 1 = LMRFrm.a_full ) , 'FINANCIAL ', '' ) + ''',' +
          ' in_cache_options=>''' + IfThen( LMRFrm.a_use_cache, '', 'BYPASS' ) + ''''
          + ' ); '
          + packageName + '.create_xls( ''' + LMRFrm.a_tpl_code + ''',''' + IfThen( _useDevPackage , 'DEV' , 'PROD' ) + ''');'
          + packageName + '.fill_tmp_lmr_flat; ' + // tmp_lmr_flat используется для выгрузки картинок
      + 'end;';

Can you spot an error? Don’t think you can do it at a glance. Neither could I. So I had to comment line after a line till I found an extra plus sign near the last comment.
So the error was saying: I can not increment the string that I’ve build so far. Strings are not numbers dude.
‘Operator not applicable to this operand type’ is not very informative message. And it came without pointing to the exact line. As always.