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

    +1

    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
    case MarkType of
        mtNormal:
          Normal.FindItem(M, OutV);
        mtUpLimit:
          OutV.Reset(M, rtUpLimit);
        mtDownLimit:
          OutV.Reset(M, rtDownLimit);
        mtStartDefault:
          if Owner.IsMount then
            OutV.Reset(M, rtDefault);
          else if not Owner.Scene.FindPreviousMark(M, OutV) then
            OutV.Reset(M, rtDefault);
      end;

    ахаха, синтаксисопроблемы.

    kipar, 12 Апреля 2016

    Комментарии (6)
  2. Pascal / Говнокод #19587

    0

    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
    const
     base = 10000;
     dig = 4;
     maxlen = 100;
    type
     ArrCh = ARRAY [0..maxlen] of integer;
     
    function StrToArr(a: string): ArrCh;
    var NUM: ArrCh;
        len,j,c: integer;
        temp: string;
    begin
     len:=length(a);
     While len>dig do
      begin
        temp:=copy(a,len-dig+1,dig);
        inc(j);
        val(temp,NUM[j],c);
        delete(a,len-dig+1,dig);
        len:=length(a);
      end;  
     val(a,NUM[j+1],c); 
     NUM[0]:=j+1;
     StrToArr:=NUM;
    end;
    
    function ADD(a,b:ArrCh): ArrCh;
    var i,r: integer;
    begin
    r:=0;
    if a[0]<b[0] then a[0]:=b[0];
    for i:=1 to a[0] do
      begin
        if r=0 then a[i]:=a[i]+b[i]
               else begin
                      a[i]:=a[i]+b[i]+1;
                      r:=0;
                    end; 
        if a[i]>=base then 
          begin
            a[i]:=a[i] mod base;
            r:=1;
          end;
      end;
     if r<>0 then 
       begin
        a[0]:=a[0]+1;
        a[a[0]]:=1;
       end; 
     ADD:=a;  
    end;  
          
    var a,b: string;
        i: integer;
        n1,n2,sum: ArrCh;
    begin
     readln(a); readln(b);
     n1:=StrToArr(a); n2:=StrToArr(b);
     writeln(n1[0]);
     sum:=ADD(n1,n2);
     for i:=sum[0] downto 1 do 
       if sum[i]=0 then write('0000')
                   else if (sum[i]<1000) and (i<>sum[0]) then 
                          begin
                            if sum[i] div 10=0 then write('000',sum[i])
                                               else
                            if sum[i] div 100=0 then write('00',sum[i])
                                                else
                            if sum[i] div 1000=0 then write('0',sum[i]);
                          end  
                   else write(sum[i]);
    end.

    Говнокод, складывающий длинные числа.

    FenFench, 07 Марта 2016

    Комментарии (0)
  3. Pascal / Говнокод #19582

    −2

    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
    procedure TDev.ScanBtnClick(Sender: TObject);
    var
      sel:tlistitem;
      drv:DriveObj;
      i:integer;
    begin
      for i:=devlist.Items.Count -1 downto 0 do
      begin
        sel:=devlist.items[i];
        if not sel.selected then continue;
        if sel.SubItems.Objects[0] is DriveObj then
        begin
          drv:=(sel.SubItems.Objects[0] as DriveObj);
          if drv.status=s_isprocessing then
          begin
            messagebox(handle,pchar('Предыдущее сканирование еще выполняется'),pchar('Ошибка'),mb_iconwarning);
            continue;
          end;
          StartScan(drv,true);
          sel.SubItems.Strings[2]:=(sel.SubItems.Objects[0] as DriveObj).statusAString;
        end;
      end;
    end;

    Из одной утилитки.
    ListView настроен на освобождение объектов при удалении айтема, слушает событие об удалении/добавлении устройств.

    fajes_rown, 06 Марта 2016

    Комментарии (53)
  4. Pascal / Говнокод #19569

    +1

    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
    CASE CMD[1] OF
    //...
    3005,3031,3032:
      begin
      if (varastype(cmd[2],varinteger)=1) THEN  exit;
      if (varastype(cmd[2],varinteger)=5)  THEN   result:=write_elem_spr_3031_3032(cmd);
      end;
    //...
    end;
    
    //...
    
    function TRDM_admin.write_elem_spr_3031_3032(cmd: OleVariant): OleVariant;
    begin
      if (varastype(cmd[1],varinteger)=3031) then
      begin
        if write_CS.fieldbyname('OLD_ID').AsVariant<>null then 
        s:=inttostr(write_CS.fieldbyname('OLD_ID').AsInteger) else 
        s:='null';
      end;
      if (varastype(cmd[1],varinteger)=3032) then
      begin
        if write_CS.fieldbyname('TEMPLATE_ROLE_ID').AsVariant<>null then
                      s:=inttostr(write_CS.fieldbyname('TEMPLATE_ROLE_ID').AsInteger) else
                      s:='null';
              if write_CS.fieldbyname('TYPE_DOLGN').AsVariant<>null then
                      s1:=inttostr(write_CS.fieldbyname('TYPE_DOLGN').AsInteger) else
                      s1:='null';
      end;
      if id_element>0 then // элемент существует - готовимся к записи
      begin
        if (varastype(cmd[1],varinteger)=3005) then
        begin
          write_Query.SQL.Add({запрос});
        end;
        if (varastype(cmd[1],varinteger)=3031) then
        begin
          write_Query.SQL.Add({запрос});
        end;
        if (varastype(cmd[1],varinteger)=3032) then
        begin
          write_Query.SQL.Add({запрос});
        end;
        //несколько строк малозначащего кода
      end else 
          begin
          if (varastype(cmd[1],varinteger)=3005) then
                  read_spr_Query.SelectSQL.Add('select gen_id(GEN_TAB_LPU_ID,1) from rdb$database');
          if (varastype(cmd[1],varinteger)=3031) then
                  read_spr_Query.SelectSQL.Add('select gen_id(GEN_TAB_STRUCT_ID,1) from rdb$database');
          if (varastype(cmd[1],varinteger)=3032) then
                  read_spr_Query.SelectSQL.Add('select gen_id(GEN_SPR_DOLGN_ID,1) from rdb$database');
          //Ещё несколько малозначащих строк
          if (varastype(cmd[1],varinteger)=3005) then
              write_Query.SQL.Add({запрос});
              if (varastype(cmd[1],varinteger)=3031) then
                  begin
                  write_Query.SQL.Add({запрос});
                  struct_lpu_id:=write_CS.fieldbyname('lpid').AsInteger;
                  end;
               if (varastype(cmd[1],varinteger)=3032) then
                  begin
                  write_Query.SQL.Add({запрос});
                  end;
          //Ещё несколько малозначащих строк
          end;
          if (varastype(cmd[1],varinteger)=3031) then
          begin
          //Ещё много строк
          end;
          write_IBT.Commit;
    end;

    Очевидно, объединяя сущности 3005, 3031 и 3032 в одном методе, автор хотел показать, что они взаимосвязаны.

    tucvbif, 03 Марта 2016

    Комментарии (3)
  5. Pascal / Говнокод #19560

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    if i>c then c:=i;
    cc:=i;
    for i:=0 to 10 do while Length(strs[i])<col_nam_width+col_norm_width+col_rez_width+col_nam_width+col_norm_width do strs[i]:=strs[i]+' ';
    if cc>c then c:=cc;

    а вдруг?

    tucvbif, 02 Марта 2016

    Комментарии (2)
  6. Pascal / Говнокод #19431

    −2

    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
    {$IF (current_arm_id=6) }
    if (CS_data.FieldByName('TYPE_DVIG').AsInteger=38) then
     begin
     MessageDlg('Выберите амбулаторное посещение рядом'+#10+#13+'(c той же датой - то есть первое посещение по этой карте)',mtConfirmation,[mbok],0);
     exit;
     end;
    
    IF (CS_data.FieldByName('TYPE_DVIG').AsInteger=31) or (CS_data.FieldByName('TYPE_DVIG').AsInteger=0) or
       (CS_data.FieldByName('TYPE_DVIG').AsInteger=39)
     then
      begin
      MainForm.createMDIwindow('', 'Thist_form',CS_data.FieldByName('TYPE_KART').AsInteger,
            CS_data.FieldByName('ID_KART').AsInteger,
            0, dm1.current_timestamp,NULL);
      end else
      begin
        with(  MainForm.createMDIwindow('Движение','TDvig_form',4,
                    CS_data.FieldByName('ID_DVIG').AsInteger,
                    CS_data.FieldByName('id_kart').AsInteger,dm1.current_timestamp,NULL) as TDvig_form) do
                   begin
                     {
                   tip_:=4;
        id_doc_mk:=CS_data.FieldByName('id_kart').AsInteger;
        id_doc:=CS_data.FieldByName('ID_DVIG').AsInteger;
        _init(0);      }
                   end;
      end;
    {$IFEND}
    
    
    {$IF (current_arm_id=4) }
    if (CS_data.FieldByName('TYPE_DVIG').AsInteger=38) then
     begin
     MessageDlg('Выберите амбулаторное посещение рядом'+#10+#13+'(c той же датой - то есть первое посещение по этой карте)',mtConfirmation,[mbok],0);
     exit;
     end;
    
    IF (CS_data.FieldByName('TYPE_DVIG').AsInteger=31) or
       (CS_data.FieldByName('TYPE_DVIG').AsInteger=39)
     then
      begin
      if DM1.Get_Sanction(CS_data.FieldByName('TYPE_KART').AsInteger,
                          CS_data.FieldByName('ID_KART').AsInteger,current_user_id,[3]) then
    
     MainForm.createMDIwindow('','Treg_form',CS_data.FieldByName('TYPE_KART').AsInteger,
            CS_data.FieldByName('ID_KART').AsInteger,
    //        CS_data.FieldByName('pac_id').AsInteger,
            CS_data.FieldByName('ID_DVIG').AsInteger,
            dm1.current_timestamp,NULL)
    
                else MessageDlg('Вы не имеете право выполнять это действие!',mtInformation,[mbok],0);
      end else
      begin
            MainForm.createMDIwindow('Движение','TDvig_form',4,
                    CS_data.FieldByName('ID_DVIG').AsInteger,
                    CS_data.FieldByName('id_kart').AsInteger,dm1.current_timestamp,null);
    
      end;
    {$IFEND}

    Переопределение метода через current_arm_id

    tucvbif, 11 Февраля 2016

    Комментарии (4)
  7. Pascal / Говнокод #19397

    −1

    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
    DS_marka_avtoID_V_SPR_TS: TFloatField;
    DS_marka_avtoNUM_GOS: TStringField;
    DS_marka_avtoMARKA_AVTO: TStringField;
    DS_marka_avtoNUM_TEHPASPORT: TStringField;
    DS_marka_avtoK_PRED: TFloatField;
    DS_marka_avtoFLAG_A: TFloatField;
    DS_marka_avtoNUM_GOS_ONLY_DIGIT: TStringField;
    S_marka_avto: TDataSource;
    DS_Gruz: TOracleDataSet;
    S_Gruz: TDataSource;
    DS_Soprovogdenie: TOracleDataSet;
    DS_SoprovogdenieID_P_JOURNAL: TFloatField;
    DS_SoprovogdenieID_V_SPR_VODITEL: TFloatField;
    DS_SoprovogdenieFIO: TStringField;
    DS_SoprovogdenieDOC: TStringField;
    S_Soprovogdenie: TDataSource;
    tbl_voditelView1FIO: TcxGridDBColumn;
    DS_Ins_Voditel: TOracleDataSet;
    DS_Ins_VoditelID_V_SPR_VODITEL: TFloatField;
    DS_Ins_VoditelPR_STORON: TFloatField;
    DS_marka_avtoPR_VLADELETS_TS: TFloatField;

    и еще 200 подобных строк истинного энтэрпрайзного кода

    hovak, 04 Февраля 2016

    Комментарии (0)
  8. Pascal / Говнокод #19378

    0

    1. 1
    2. 2
    3. 3
    4. 4
    s:=LongTimeFormat;       
                LongTimeFormat:='h:mm';
                read_spr_cs2.FieldByName('time_str').AsString:=TimeToStr(dt);
                LongTimeFormat:=s;

    tucvbif, 01 Февраля 2016

    Комментарии (1)
  9. Pascal / Говнокод #19375

    −3

    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
    function get_filenamebyid(req_file_id_in:integer;is_answer:boolean;X_MESS_SWAP_path:string):string;
    var FILENAME_ONSERVER,FILE_PATH_ONSERVER,s,ss:string;
    req_file_id:integer;
        begin                                  //sdsd
          req_file_id:=abs(req_file_id_in);
        s:=inttostr(req_file_id div (1000*1000*1000));
        while length(s)<3 do s:='0'+s;
        ss:=s;
        s:=inttostr(req_file_id div (1000*1000));
        while length(s)<3 do s:='0'+s;
        ss:=ss+'\'+s;
        s:=inttostr(req_file_id div (1000));
        while length(s)<3 do s:='0'+s;
        ss:=ss+'\'+s;
    
        FILE_PATH_ONSERVER:=ss;
        FILENAME_ONSERVER:=inttostr(req_file_id)+ ifthen(is_answer,'.answer','')+'.xml';
        result:=X_MESS_SWAP_path+FILE_PATH_ONSERVER+'\'+      FILENAME_ONSERVER;
        end;

    Предлагаю отрефакторить

    tucvbif, 01 Февраля 2016

    Комментарии (27)
  10. Pascal / Говнокод #19359

    −1

    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
    if (class_name='Tnabl_Form') then
            begin
            nabl_Form:=Tnabl_Form.create(Application);
            with nabl_Form do
            begin
            Caption := 'Наблюдение '+dop_caption;
            tool_btn_task_bar:=
                    create_tb(1,Handle,'Наблюдение','Наблюдение '+dop_caption);
            Name:=tool_btn_task_bar.Name;
            about_kart_Frame1.id_med_kart:=id_parent;
    
            end;
            nabl_Form.id_doc:=id_doc;
            nabl_Form._init;
            Result:=nabl_Form;
            end;
                     
      if class_name='To_spiski_5201_Form' then 
            begin
            o_spiski_5201_Form:=To_spiski_5201_Form.create(Application);
            o_spiski_5201_Form.FormStyle:=fsMDIChild;
            o_spiski_5201_Form.tool_btn_task_bar:=
                    create_tb(0, o_spiski_5201_Form.Handle,'Списки больных','Списки больных'+dop_caption);
            o_spiski_5201_Form.Name:=o_spiski_5201_Form.tool_btn_task_bar.Name;
            result:=o_spiski_5201_Form;
            end;
    
    if (class_name='Td_diagn_Form') then
            begin
            d_diagn_Form:=Td_diagn_Form.create(Application);
            with d_diagn_Form do
            begin
            Caption := 'Постановка диагноза '+dop_caption;
            tool_btn_task_bar:=
                    create_tb(1,Handle,'Диагноз','Постановка диагноза '+dop_caption);
            Name:=tool_btn_task_bar.Name;
            about_kart_Frame1.id_med_kart:=id_parent;
            end;
            d_diagn_Form.id_doc:=id_doc;
            d_diagn_Form._init;
            Result:=d_diagn_Form;
            end;
    //И ещё около 600 строк в том же духе

    Наследование? Полиморфизм? ООП? Это слишком сложно!

    tucvbif, 28 Января 2016

    Комментарии (2)