1. Pascal / Говнокод #18087

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    cs_zagl.Edit;
          cs_zagl.fieldbyname('count_z').asinteger:=cs_tab.RecordCount;
          cs_zagl.Post;
    
    cs_mk.Edit;
    cs_mk.FieldByName('med_kart_id').Asinteger:=select_row_Form.ClientDataSet1.FieldByName('id_kart').asinteger;
    cs_mk.FieldByName('id_kart_public').Asinteger:=select_row_Form.ClientDataSet1.FieldByName('id_kart_public').asinteger;
    cs_mk.FieldByName('id_pac').Asinteger:=select_row_Form.ClientDataSet1.FieldByName('id_pac').asinteger;
    cs_mk.FieldByName('type_kart').asinteger:=select_row_Form.ClientDataSet1.FieldByName('type_kart').asinteger;
    cs_mk.post;
    
    
          IF (cs_mk.FieldByName('med_kart_id').Value=0) or (cs_mk.FieldByName('type_kart').asinteger<>27) then begin
          cmd := VarArrayCreate([0,20],varVariant);
          cmd[1] := 6832;
          cmd[2] := 17;
          cmd[5] := 1;
          cmd[6] := 0;
          ProvOptions := [grMetadata, grReset];
          cmd[7] := dsp_mk.GetRecords(-1, RecsOut, Byte(ProvOptions));
    
    
      try
    
        rez := MainFormInterface.EXT_call_server('spr_read', cmd);
        cs_tab.Edit;
        cs_tab.FieldByName('med_kart_id').Asinteger:=rez[3];
        cs_tab.Post;
    
    
    
        if rez[1] < 0 then begin
          debug_sql('Ошибка: ' + varastype(rez[1], varstring), 2);
          MessageDlg('Ошибка: '+ #10 + #13 +
                     varastype(rez[1],varstring),mtError,[mbok],0);
          Exit;
        end;
    
    
       except
        on e:exception do
        begin
          MessageDlg(ERROR_MESS_5 + 'Исключение:' + E.ClassName + 'Mess:' + E.Message, mterror, [mbok], 0);
          debug_sql('Ошибка записи документа!', 2);
          debug_all('Err при записи документа тип=' + varastype(cmd[1], varstring)+
                   ' id=' + inttostr(id_doc) + 'Исключение:' + E.ClassName + 'Mess:' + E.Message,2);
    
        end;
      end;
    
    
    
    
    
          end;
          end else begin
    
          
    
    
          end;
          end
          else exit;
    
    
       end else
         begin
        id_pac:=rez[3];
        id_med_kart:=rez[2];
        Application.MessageBox(pchar('Ошибка: '+#10+#13+
               'Даный пациент не найден!!!'),pchar(application_title_short),MB_OK+MB_ICONERROR);
        exit;
        end;
    
    end;

    Это называется стиль

    Запостил: tucvbif, 29 Апреля 2015

    Комментарии (5) RSS

    • Это не стиль, а незнание языка.

      >> if rez[1] < 0 then begin
      debug_sql('Ошибка: ' + varastype(rez[1], varstring), 2);
      MessageDlg('Ошибка: '+ #10 + #13 +
      varastype(rez[1],varstring),mtError,[mbok],0);
      Exit;
      end;

      Raise exception.create() - не слышали?

      >>Application.MessageBox(pchar('Ошибка : '+#10+#13+
      'Даный пациент не найден!!!'),pchar(application_title_shor t),MB_OK+MB_ICONERROR);

      Больной, вернитесь в палату!
      Ответить
    • >+ #10 + #13 +
      В пацкале нет другого способа засунуть EOL в строку?
      Ответить
      • Вообще-то правильнее заранее составить строковую константу.
        var
           CrLf:string=#13#10;
        begin
          MessageBox(handle, pchar('Ошибка : '+crlf+
          'Даный пациент не найден!!!'),pchar('Achtung!'),MB_ICONERROR);
        end;
        {trollface.PAS}
        Ответить
      • Можно и без плюсиков. Коды символов — это единственный случай, когда конкатенация не требует явного указания операторов:
        pchar('Ошибка : '#10#13'Данный пациент не найден!!!')

        Ну можно, конечно, написать (или найти в какой-нибудь библиотеке) функцию, которая будет обрабатывать всякие \r и \n, а также шаблоны printf. Но зачем?
        Ответить

    Добавить комментарий