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

    +92.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
    mTr.StartTransaction;
    
    mdsMaters.DisableControls;
    DBGridEh1.SaveBookmark;
    try
       DBGridEh1.RestoreBookmark;
       mdsMaters.EnableControls;
    
       [.... обход датасета ....]
    
    finally
      mTr.Commit;
    end;

    Как известно, перед обходом датасета нужно делать DisableControls, а главное, не забыть вызвать EnableControls.

    Чем раньше - тем лучше :)

    LionSoft, 30 Ноября 2009

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

    +115.9

    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
    function TFilesStrings.LastSlash(FileString: string): byte;
    {*
      Функция для вычисления положения последнего слеша в строке
    *}
    var
      i: byte;
    begin
      Result := 0;
      for i := 1 to Length(FileString) do
        if (FileString[i] = #92) then Result := i;
    end;
    {==============================================================================}
    
    
    {******************************************************************************}
    function TFilesStrings.GetPath(FullFileName: string): string;
    {*
      Функция возвращает оконечный путь у заданному Файлу
    *}
    var
      SlNum: byte;
    begin
      Result := '';
      SlN um := LastSlash(FullFileName);
    
      Result := Copy(FullFileName, 1, SlNum);
    end;

    Вот ещё вспомнил... Не мог понять почему у меня не работает функция ExtractFilePath, пришлось писать вручную :)

    S@nderS, 25 Ноября 2009

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

    +92.4

    1. 1
    2. 2
    if (a<0) or (a=0) 
    then ...

    Почему в универститах вместо того, чтобы ставить автоматы за такие вещи, не оценивают оптимизацию кода?

    Теперь понятно почему когда берёшь чьи-нибудь сорцы, пытаешься час понять логику в 10 строчек.

    S@nderS, 25 Ноября 2009

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

    +92.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
    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
    76. 76
    program krestiki_noliki;
    var a,b,c,
        d,e,f,
        g,h,i,
        click:char;
        cl,cr,count:smallint;
    
    procedure move; forward;
    
    procedure clickproc;
    begin
     If cr=0
      then
       begin
        cr:=1;
        click:='X';
       end
      else
       begin
        cr:=0;
        click:='O';
       end;
    end;
    
    procedure restart;
    begin
    if count<9
       then move
       else
        begin
         count:=0;
         cr:=0;
         cl:=0;
         click:='X';
         a:='_';
         b:='_';
         c:='_';
         d:='_';
         e:='_';
         f:='_';
         g:='_';
         h:='_';
         i:='_';
        end;
    end;
    
    procedure move;
    begin
      readln(cl);
      clickproc;
      if (cl=1) and (a='_') then a:=click;
      if (cl=2) and (b='_') then b:=click;
      if (cl=3) and (c='_') then c:=click;
      if (cl=4) and (d='_') then d:=click;
      if (cl=5) and (e='_') then e:=click;
      if (cl=6) and (f='_') then f:=click;
      if (cl=7) and (g='_') then g:=click;
      if (cl=8) and (h='_') then h:=click;
      if (cl=9) and (i='_') then i:=click;
      count:=count+1;
      writeln(a,'|',b,'|',c);
      writeln(d,'|',e,'|',f);
      writeln(g,'|',h,'|',i);
      writeln('-----');
      restart;
    end;
    
    begin
    count:=0;
    cr:=0;
    writeln('1|2|3');
    writeln('4|5|6f');
    writeln('7|8|9');
    writeln('-----');
    restart;
    end.

    навеяло кодом на Visual Basic, подумал что смогу воплотить на Паскале. Зря, не стоило...
    (так и не понял, что именно не работает)

    Airbus, 23 Ноября 2009

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

    +90.9

    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
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    for i := 0 to 89 do begin
    case i of
    0:obj[0]:=obj[0]+1
    1:obj[1]:=obj[1]+1
    2:obj[2]:=obj[2]+1
    3:obj[3]:=obj[3]+1
    4:obj[4]:=obj[4]+1
    5:obj[5]:=obj[5]+1
    6:obj[6]:=obj[6]+1
    7:obj[7]:=obj[7]+1
    8:obj[8]:=obj[8]+1
    9:obj[9]:=obj[9]+1
    10:obj[10]:=obj[10]+1
    11:obj[11]:=obj[11]+1
    12:obj[12]:=obj[12]+1
    13:obj[13]:=obj[13]+1
    14:obj[14]:=obj[14]+1
    15:obj[15]:=obj[15]+1
    16:obj[16]:=obj[16]+1
    17:obj[17]:=obj[17]+1
    18:obj[18]:=obj[18]+1
    19:obj[19]:=obj[19]+1
    20:obj[20]:=obj[20]+1
    21:obj[21]:=obj[21]+1
    22:obj[22]:=obj[22]+1
    23:obj[23]:=obj[23]+1
    24:obj[24]:=obj[24]+1
    25:obj[25]:=obj[25]+1
    26:obj[26]:=obj[26]+1
    27:obj[27]:=obj[27]+1
    28:obj[28]:=obj[28]+1
    29:obj[29]:=obj[29]+1
    30:obj[30]:=obj[30]+1
    31:obj[31]:=obj[31]+1
    32:obj[32]:=obj[32]+1
    33:obj[33]:=obj[33]+1
    34:obj[34]:=obj[34]+1
    35:obj[35]:=obj[35]+1
    36:obj[36]:=obj[36]+1
    37:obj[37]:=obj[37]+1
    38:obj[38]:=obj[38]+1
    39:obj[39]:=obj[39]+1
    40:obj[40]:=obj[40]+1
    41:obj[41]:=obj[41]+1
    42:obj[42]:=obj[42]+1
    43:obj[43]:=obj[43]+1
    44:obj[44]:=obj[44]+1
    45:obj[45]:=obj[45]+1
    46:obj[46]:=obj[46]+1
    47:obj[47]:=obj[47]+1
    48:obj[48]:=obj[48]+1
    49:obj[49]:=obj[49]+1
    50:obj[50]:=obj[50]+1
    51:obj[51]:=obj[51]+1
    52:obj[52]:=obj[52]+1
    53:obj[53]:=obj[53]+1
    54:obj[54]:=obj[54]+1
    55:obj[55]:=obj[55]+1
    56:obj[56]:=obj[56]+1
    57:obj[57]:=obj[57]+1
    58:obj[58]:=obj[58]+1
    59:obj[59]:=obj[59]+1
    60:obj[60]:=obj[60]+1
    61:obj[61]:=obj[61]+1
    62:obj[62]:=obj[62]+1
    63:obj[63]:=obj[63]+1
    64:obj[64]:=obj[64]+1
    65:obj[65]:=obj[65]+1
    66:obj[66]:=obj[66]+1
    67:obj[67]:=obj[67]+1
    68:obj[68]:=obj[68]+1
    69:obj[69]:=obj[69]+1
    70:obj[70]:=obj[70]+1
    71:obj[71]:=obj[71]+1
    72:obj[72]:=obj[72]+1
    73:obj[73]:=obj[73]+1
    74:obj[74]:=obj[74]+1
    75:obj[75]:=obj[75]+1
    76:obj[76]:=obj[76]+1
    77:obj[77]:=obj[77]+1
    78:obj[78]:=obj[78]+1
    79:obj[79]:=obj[79]+1
    80:obj[80]:=obj[80]+1
    81:obj[81]:=obj[81]+1
    82:obj[82]:=obj[82]+1
    83:obj[83]:=obj[83]+1
    84:obj[84]:=obj[84]+1
    85:obj[85]:=obj[85]+1
    86:obj[86]:=obj[86]+1
    87:obj[87]:=obj[87]+1
    88:obj[88]:=obj[88]+1
    89:obj[89]:=obj[89]+1
    end;
    end;

    Надо Добавить единицу ко всем элементам массива

    Tonnelll, 18 Ноября 2009

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

    +92.7

    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
    76. 76
    77. 77
    78. 78
    unit CelFahKel;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        RadioGroup1: TRadioGroup;
        RadioGroup2: TRadioGroup;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      F: Extended;
      C: Integer;
    begin
      if RadioGroup1.ItemIndex=0 then
    
        if RadioGroup2.ItemIndex=0 then
          Edit2.Text := Edit1.Text
        else if RadioGroup2.ItemIndex=1 then
        begin
          F := StrToFloat(Edit1.Text) * (9/5) + 32;
          Edit2.Text := FloatToStr(F)
        end
        else if RadioGroup2.ItemIndex=2 then
        begin
          C := StrToInt(Edit1.Text) + 273;
          Edit2.Text := FloatToStr(C);
        end;
    
      if RadioGroup1.ItemIndex=1 then
        if RadioGroup2.ItemIndex=0 then
        begin
          F := StrToFloat(Edit1.Text) - 32 * (5/9);
          Edit2.Text := FloatToStr(F);
        end
        else if RadioGroup2.ItemIndex=1 then
          Edit2.Text := Edit1.Text
        else if RadioGroup2.ItemIndex=2 then
        begin
          F := StrToFloat(Edit1.Text) - 32 * (5/9) + 273;
          Edit2.Text := FloatToStr(F);
        end;
    
      if RadioGroup1.ItemIndex=2 then
        if RadioGroup2.ItemIndex=0 then
        begin
          C := StrToInt(Edit1.Text) - 273;
          Edit2.Text := IntToStr(C);
        end
        else if RadioGroup2.ItemIndex=1 then
        begin
          F := StrToFloat(Edit1.Text) + 32 * (9/5) - 273;
          Edit2.Text := FloatToStr(F);
        end
        else if RadioGroup2.ItemIndex=2 then
           Edit2.Text := Edit1.Text
    end;
    end.

    Всего-то навсего перевод градусных величин: Сельсий <-> Фаренгейт <-> Кельвин и вывод в Эдит

    sevenfourk, 18 Ноября 2009

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

    +93.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
    20. 20
    21. 21
    22. 22
    23. 23
    type
    chel = record
    name:string;
    tag:int64;
    end;
    
    procedure go_to_banaj (var obj:chel);
    begin
    obj.tag:=obj.tag+1;
    writeln(obj.name+', Пошел ты в баню')
    writeln('Тебя послали в баню '+inttostr(obj.tag)+' Раз')
    end;
    
    procedure prolaps;
    var
    obj:chel;
    begin
    obj.tag:=0;
    readln(obj.name);
    //obj.name:='Фyтбалёр';
    while 1=1 do 
    go_to_banaj(obj)
    end;

    Tonnelll, 17 Ноября 2009

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

    +97.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
    {1}
    if ((a='AC')or(a='CA')or(a='BD')or(a='DB'))and((b='AC')or(b='CA')or(b='BD')or(b='DB'))then write('YES') else
    if ((a='AC')or(a='CA')or(a='BC')or(a='CB'))and((b='AC')or(b='CA')or(b='BC')or(b='CB'))then write('YES') else
    if ((a='BC')or(a='CB')or(a='BD')or(a='DB'))and((b='BC')or(b='CB')or(b='BD')or(b='DB'))then write('YES') else
    if ((a='AB')or(a='BA')or(a='BD')or(a='DB'))and((b='AB')or(b='BA')or(b='BD')or(b='DB'))then write('YES') else
    if ((a='AC')or(a='CA')or(a='AB')or(a='BA'))and((b='AC')or(b='CA')or(b='AB')or(b='BA'))then write('YES') else
    if ((a='AC')or(a='CA')or(a='AD')or(a='DA'))and((b='AC')or(b='CA')or(b='AD')or(b='DA'))then write('YES') else
    if ((a='AD')or(a='DA')or(a='BD')or(a='DB'))and((b='AD')or(b='DA')or(b='BD')or(b='DB'))then write('YES') else
    if ((a='AC')or(a='CA')or(a='CD')or(a='DC'))and((b='AC')or(b='CA')or(b='CD')or(b='DC'))then write('YES') else
    if ((a='DC')or(a='CD')or(a='BD')or(a='DB'))and((b='DC')or(b='CD')or(b='BD')or(b='DB'))then write('YES') else
    if ((a='BC')or(a='CB')or(a='CD')or(a='DC'))and((b='BC')or(b='CB')or(b='CD')or(b='DC'))then write('YES') else
    if ((a='AD')or(a='DA')or(a='CD')or(a='DC'))and((b='AD')or(b='DA')or(b='CD')or(b='DC'))then write('YES') else
    if ((a='AB')or(a='BA')or(a='AD')or(a='DA'))and((b='AB')or(b='BA')or(b='DA')or(b='AD'))then write('YES') else
    if ((a='AB')or(a='BA')or(a='BC')or(a='CB'))and((b='AB')or(b='BA')or(b='BC')or(b='CB'))then write('YES') else
    {2}
    if ((a='A1C1')or(a='C1A1')or(a='B1D1')or(a='D1B1'))and((b='A1C1')or(b='C1A1')or(b='B1D1')or(b='D1B1'))then write('YES') else
    if ((a='A1C1')or(a='C1A1')or(a='B1C1')or(a='C1B1'))and((b='A1C1')or(b='C1A1')or(b='B1C1')or(b='C1B1'))then write('YES') else
    if ((a='B1C1')or(a='C1B1')or(a='B1D1')or(a='D1B1'))and((b='B1C1')or(b='C1B1')or(b='B1D1')or(b='D1B1'))then write('YES') else
    if ((a='A1B1')or(a='B1A1')or(a='B1D1')or(a='D1B1'))and((b='A1B1')or(b='B1A1')or(b='B1D1')or(b='D1B1'))then write('YES') else
    if ((a='A1C1')or(a='C1A1')or(a='A1B1')or(a='B1A1'))and((b='A1C1')or(b='C1A1')or(b='A1B1')or(b='B1A1'))then write('YES') else
    if ((a='A1C1')or(a='C1A1')or(a='A1D1')or(a='D1A1'))and((b='A1C1')or(b='C1A1')or(b='A1D1')or(b='D1A1'))then write('YES') else
    if ((a='A1D1')or(a='D1A1')or(a='B1D1')or(a='D1B1'))and((b='A1D1')or(b='D1A1')or(b='B1D1')or(b='D1B1'))then write('YES') else
    if ((a='A1C1')or(a='C1A1')or(a='C1D1')or(a='D1C1'))and((b='A1C1')or(b='C1A1')or(b='C1D1')or(b='D1C1'))then write('YES') else
    if ((a='D1C1')or(a='C1D1')or(a='B1D1')or(a='D1B1'))and((b='D1C1')or(b='C1D1')or(b='B1D1')or(b='D1B1'))then write('YES') else
    if ((a='B1C1')or(a='C1B1')or(a='C1D1')or(a='D1C1'))and((b='B1C1')or(b='C1B1')or(b='C1D1')or(b='D1C1'))then write('YES') else
    if ((a='A1D1')or(a='D1A1')or(a='C1D1')or(a='D1C1'))and((b='A1D1')or(b='D1A1')or(b='C1D1')or(b='D1C1'))then write('YES') else
    if ((a='A1B1')or(a='B1A1')or(a='A1D1')or(a='D1A1'))and((b='A1B1')or(b='B1A1')or(b='D1A1')or(b='A1D1'))then write('YES') else
    if ((a='A1B1')or(a='B1A1')or(a='B1C1')or(a='C1B1'))and((b='A1B1')or(b='B1A1')or(b='B1C1')or(b='C1B1'))then write('YES') else
    
    //оставшуюся часть я опустил из-за ее невместимости в 4000 символов.
    writeln('NO');
    end.

    Этот говнокод (полностью, а не этот говнокусок) по идее должен выискивать пересечения отрезков куба. Мы с другом поспорили, что я смоу написать прогу только с ifами, и олимпиадный сайт accepted ее.Он принял.

    Shprotbl, 11 Ноября 2009

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

    +96.4

    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
    temp:= min(Mon.VGA,Comp.VGA);
    inc(n,temp);
    dec(Mon.VGA,temp);
    dec(Comp.VGA,temp);
    temp:= min(Mon.DVI,Comp.DVI);
    inc(n,temp);
    dec(Mon.DVI,temp);
    dec(Comp.DVI,temp);
    temp:= min(Mon.Multi,Comp.Multi);
    inc(n,temp);
    dec(Mon.Multi,temp);
    dec(Comp.Multi,temp);
    if Mon.Multi<>0
     then
      begin
      temp:= min(Mon.Multi,Comp.VGA);
      inc(n,temp);
      dec(Mon.Multi,temp);
      dec(Comp.VGA,temp);
      temp:= min(Mon.Multi,Comp.DVI);
      inc(n,temp);
      dec(Mon.Multi,temp);
      dec(Comp.DVI,temp);
      end;
    if Comp.Multi<>0
     then
      begin
      temp:= min(Mon.VGA,Comp.Multi);
      inc(n,temp);
      dec(Mon.VGA,temp);
      dec(Comp.Multi,temp);
      temp:= min(Mon.DVI,Comp.Multi);
      inc(n,temp);
      dec(Mon.DVI,temp);
      dec(Comp.Multi,temp);
      end;

    Из ещё одного решения олимпиадной задачи. Вроде подсчитывает количество компов, которые можно собрать при учёте, что у системников и мониторов может быть интерфейс DVI, VGA или оба сразу (Multi).

    Сан Саныч, 09 Ноября 2009

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

    +98.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // Этот говняжный кусочек кода лечит работу козьих шариков.
    for iter := 0 to staticSet.fields.Count - 1 do
      if staticSet.fields[i].IsNull then
        ;
    // Конец говняжного кусочка кода

    Вкратце: staticSet - декоратор (обертка) для ADO Recordset; чтобы синхронизировать обертку и носителя, надо было дернуть любой метод. Автор выбрал R/O property IsNull. Но каков вброс. Комментарии прошу считать частью кода. Если учесть, что плотность комментариев 1 на примерно 60 КБ кода.

    Billy the Kidd, 09 Ноября 2009

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