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

    +93

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for i:=1 to 100 do
    begin
    for j:=1 to f do
    begin
    ...
    end;
    f:=f+1000;
    end;

    Бедные дельфины, им не повезло с циклами.

    CHayT, 12 Февраля 2011

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

    +110

    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
    procedure TMainForm.ApplicationEventsShortCut(var Msg: TWMKey;
      var Handled: Boolean);
    begin
      if msg.CharCode <> vk_F11 then
        exit;
      raise Exception.Create('Вы хотите выйти из программы?');
    end;
    
    procedure TMainForm.ApplicationEventsException(Sender: TObject;
      E: Exception);
    begin
      if Application.MessageBox(pchar('Произошла ошибка:'#13#10 + e.Message
        +
        #13#10'Нажмите Retry продолжить работу c программой.'#13#10'Нажмите Сancel чтобы завершить работу программы.'),
        'Ошибка', MB_RETRYCANCEL or MB_ICONINFORMATION or MB_SYSTEMMODAL) =
        ID_CANCEL then try
        MainData.MainDataBaseBeforeDisconnect(nil);
        Close;
      finally
        Application.Terminate;
      end;
      if not CaptureError(E) then
        Close;
    end;

    предыдущий автор одного проекта таким вот нетривиальным образом сделал подтверждение выхода из программы. так понравилось, что не стал убивать, просто закомментарил. сейчас весть этот код заменен одной строчкой в OnCloseQuery.

    поясню, на всякий случай. по нажатию F11 поднимается эспепшен "Вы хотите выйти из программы?", этот экспепшен перехватывается на уровне TApplication, выводится сообщение "Произошла ошибка: "Вы хотите выйти из программы?"" с педалями "Retry" и "Cancel", и при нажатии на отмену прога тупо рубиться по Application.Terminate.

    непростое детство было у песателя, по ходу.

    x77, 11 Февраля 2011

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

    +96

    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
    procedure tnew.execute;
    var
    cod:utf8string;
    id:byte;
    
    captcha,sim,idc:string;
    ss:TStringStream;
    s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,
    s11,s12,s13,s14,s15,s16,s17,s18,
    s19,s20,s21,s22,s23,s24,s25,s26,
    s27,s28,s29,s30,s31,s32,s33:utf8string;
    FS:TFileStream;
    Antigate: TAntigate;
    begin
    form3.IdHTTP1.Request.Referer :='http://www.aboutlive.ru/phpBB2/profile.php?mode=register';
    
    cod:=form3.IdHTTP1.get('http://www.aboutlive.ru/phpBB2/profile.php?mode=register&agreed=true');
    
    function Pars (T_, ForS, _T: string): string;
    var
    a, b: integer;
    begin
    Result := '';
    if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
    a := Pos (T_, ForS);
    if a = 0 then
    Exit
    else
    a := a + Length (T_);
    ForS := Copy (ForS, a, Length (ForS) - a + 1);
    b := Pos (_T, ForS);
    if b > 0 then
    Result := Copy (ForS, 1, b - 1);
    end;
    
    
    idc:= pars('confirm_id" value="',cod,'" />');
    sim:= pars('sid" value="',cod,'" />');
    
    FS:=TFileStream.Create('captcha.png',FMCreate);
    form3.IdHTTP1.Get('http://www.aboutlive.ru/phpBB2/profile.php?mode=confirm&id='+idc, FS);
    FS.free;
    form3.Image1.Picture.LoadFromFile('captcha.png');
    
    Antigate := TAntigate.Create; // это разгадка капчи
    antigate.Calc:=1;
    antigate.MaxRetry:=3;
    Antigate.Key := '';
    Antigate.ImageFile := 'captcha.png';
    captcha:=Antigate.Recognize;
    Antigate.free;
    
    form3.RichEdit1.Lines.Add('Капча: '+AnsiUpperCase(captcha));
    
    form3.IdHTTP1.Request.Referer :='http://www.aboutlive.ru/phpBB2/profile.php?mode=register&agreed=true';
    ss := TStringStream.Create;
    
    s1:='username=sadsaddfsa12342';
    s2:='[email protected]';
    s3:='new_pasword=1234567';
    s4:='pasword_confirm=1234567';
    s5:='confirm_code='+captcha;
    s6:='icq=';
    s7:='aim=';
    s8:='msn=';
    s9:='yim=';
    s10:='website=';
    s11:='location=';
    s12:='occupation=';
    s13:='interests=';
    s14:='signature=';
    s15:='viewemail=0';
    s16:='hideonline=0';
    s17:='notifyreply=0';
    s18:='notifypm=1';
    s19:='popup_pm=1';
    s20:='attachsig=1';
    s21:='allowbbcode=1';
    s22:='allowhtml=1';
    s23:='allowsmilies=1';
    s24:='language=russian';
    s25:='style=1';
    s26:='timezone=4';
    s27:='dateformat=D M d, Y g:i a';
    s28:='mode=register';
    s29:='agreed=true';
    s30:='coppa=0';
    s31:='sid='+sim;
    s32:='confirm_id='+idc;
    s33:='submit=Отправить';
    ss.WriteString (s1+'&'+s2+'&'+s3+'&'+s4+'&'+s5+'&'+s6+'&'+s7+'&'+s8+'&'+s9+'&'+s10+'&'+s11+'&'+s12+'&'+s13+'&'+s14+'&'+s15+'&'+s16+'&'+s17+'&'+s18+'&'+s19+'&'+s20+'&'+s21+'&'+s22+'&'+s23+'&'+s24+'&'+s25+'&'+s26+'&'+s27+'&'+s28+'&'+s29+'&'+s30+'&'+s31+'&'+s32+'&'+s33);

    Что уж тут напишешь....

    Irdis, 11 Февраля 2011

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

    +102

    1. 1
    while dlg_SmplSpk.ShowModal = mrOk do ;

    Узрел такое! Срочно к себе в рецепты прогрессивного программирования!
    Сделано это для того, чтобы окно не закрывалось при подтверждении всех сделанных действий.
    Закрываться должно только при нажатии кнопочки "Закрыть".
    Отсюда непонятен ход мыслей автора сия творения.

    Grizzly, 11 Февраля 2011

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

    +92

    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
    I:=1;
        while I<=High(Sockets) do
         begin
          if FD_IsSet(Sockets[I],FDSet) then
           if Recv(Sockets[I],…)<=0 then
            begin
             // Связь разорвана, надо закрыть сокет
             // и удалить его из массива
             CloseSocket(Sockets[I]);
             for J:=I to High(Sockets)-1 do
              Sockets[J]:=Sockets[J+1];
             Dec(I);
             SetLength(Sockets,Length(Sockets)-1)
            end
           else
            begin
             // Получены данные от клиента, надо ответить
             Send(Sockets[I],…)
            end;
          Inc(I)
         end;

    На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.

    TarasB, 09 Февраля 2011

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

    +101

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    ....
    for i:=1 to 4 do for j:=1 to 4 do begin a[i,j]:=b; b:=b-1; end;
    for i:=1 to 4 do for j:=1 to 4 do if a[i,j]=16 then begin k:=i;l:=j; end;
    for i:=1 to 4 do
    for j:=1 to 4 do
    begin
    gotoxy(5+3*i,5+2*j);
    write(a[i,j]);
    end; 
    ....

    http://otvet.mail.ru/question/52501602/

    1_and_0, 02 Февраля 2011

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

    +99

    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 TForm1.Timer1Timer(Sender: TObject);
    var Ras, MinRas, MinC, Comp: Integer;
    begin
    Ras:=0;
    MinC:=0;
    MinRas:=0;      // всё по нулям
     for Comp:=0 to ComponentCount-1 do // цикл по всем компонентам
      begin
       IF (Components[Comp] is TPanel) and (Components[Comp] <> Panel1) and (Panel1.Left>TPanel(Components[Comp]).Left) then
                     Ras:=Panel1.Left-TPanel(Components[Comp]).Left
                     else
       IF (Components[Comp] is TPanel) and (Components[Comp] <> Panel1) and (Panel1.Left<TPanel(Components[Comp]).Left) then
                     Ras:=TPanel(Components[Comp]).Left-Panel1.Left;
       If Ras < MinRas
        then begin
                MinRas:= Ras;  //устанавливаем переменные этой панельки за основные
                MinC:= Comp;
        end;
      end;
       if Panel1.top<(TPanel(Components[MinC]).Top-TPanel(Components[MinC]).Height) then
                    Panel1.Top:=Panel1.Top+3;    //если панель ниже то допрыгиваем
      PROBEL:=Panel1.Top=TPanel(Components[MinC]).Top-TPanel(Components[MinC]).Height
      end;

    какое-то панельное безумие

    bugmenot, 02 Февраля 2011

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

    +103

    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
    Const MAX32 : DWord = $FFFFFFFF;
     
    Var
        State : Array[0..15] of DWord;
        Count : Array[0..1] of DWord;
        Len : Byte;
        Buffer : Array[0..31] of Byte;
     
    Procedure SHIFT12(var U : Array of DWord; var M : Array of DWord; var S : Array of DWord);
    Begin
            U[0] := M[0] xor S[6];
            U[1] := M[1] xor S[7];
            U[2] := M[2] xor (S[0] shl 16) xor (S[0] shr 16) xor (S[0] and $FFFF) xor
                    (S[1] and $FFFF) xor (S[1] shr 16) xor (S[2] shl 16) xor S[6] xor (S[6] shl 16) xor
                    (S[7] and $FFFF0000) xor (S[7] shr 16);
            U[3] := M[3] xor (S[0] and $FFFF) xor (S[0] shl 16) xor (S[1] and $FFFF) xor
                    (S[1] shl 16) xor (S[1] shr 16) xor (S[2] shl 16) xor (S[2] shr 16) xor
                    (S[3] shl 16) xor S[6] xor (S[6] shl 16) xor (S[6] shr 16) xor (S[7] and $FFFF) xor
                    (S[7] shl 16) xor (S[7] shr 16);
            U[4] := M[4] xor
                    (S[0] and $FFFF0000) xor (S[0] shl 16) xor (S[0] shr 16) xor
                    (S[1] and $FFFF0000) xor (S[1] shr 16) xor (S[2] shl 16) xor (S[2] shr 16) xor
                    (S[3] shl 16) xor (S[3] shr 16) xor (S[4] shl 16) xor (S[6] shl 16) xor
                    (S[6] shr 16) xor(S[7] and $FFFF) xor (S[7] shl 16) xor (S[7] shr 16);
            U[5] := M[5] xor (S[0] shl 16) xor (S[0] shr 16) xor (S[0] and $FFFF0000) xor
                    (S[1] and $FFFF) xor S[2] xor (S[2] shr 16) xor (S[3] shl 16) xor (S[3] shr 16) xor
                    (S[4] shl 16) xor (S[4] shr 16) xor (S[5] shl 16) xor  (S[6] shl 16) xor
                    (S[6] shr 16) xor (S[7] and $FFFF0000) xor (S[7] shl 16) xor (S[7] shr 16);
            U[6] := M[6] xor S[0] xor (S[1] shr 16) xor (S[2] shl 16) xor S[3] xor (S[3] shr 16) xor
                    (S[4] shl 16) xor (S[4] shr 16) xor (S[5] shl 16) xor (S[5] shr 16) xor S[6] xor
                    (S[6] shl 16) xor (S[6] shr 16) xor (S[7] shl 16);
            U[7] := M[7] xor (S[0] and $FFFF0000) xor (S[0] shl 16) xor (S[1] and $FFFF) xor
                    (S[1] shl 16) xor (S[2] shr 16) xor (S[3] shl 16) xor S[4] xor (S[4] shr 16) xor
                    (S[5] shl 16) xor (S[5] shr 16) xor (S[6] shr 16) xor (S[7] and $FFFF) xor
                    (S[7] shl 16) xor (S[7] shr 16);
    End;
     
    Procedure SHIFT16(var H : Array of DWord; var V : Array of DWord; var U : Array of DWord);
    Begin
            V[0] := H[0] xor (U[1] shl 16) xor (U[0] shr 16);
            V[1] := H[1] xor (U[2] shl 16) xor (U[1] shr 16);
            V[2] := H[2] xor (U[3] shl 16) xor (U[2] shr 16);
            V[3] := H[3] xor (U[4] shl 16) xor (U[3] shr 16);
            V[4] := H[4] xor (U[5] shl 16) xor (U[4] shr 16);
            V[5] := H[5] xor (U[6] shl 16) xor (U[5] shr 16);
            V[6] := H[6] xor (U[7] shl 16) xor (U[6] shr 16);
            V[7] := H[7] xor (U[0] and $FFFF0000) xor (U[0] shl 16) xor (U[7] shr 16) xor
                    (U[1] and $FFFF0000) xor (U[1] shl 16) xor (U[6] shl 16) xor (U[7] and $FFFF0000);
    End;

    qbasic, 31 Января 2011

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

    +94

    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
    For i := 0 to 7 do
         Begin
          If ((iMass[i])[1] = dClick.xAlf) and (StrToInt((iMass[i])[2]) = dClick.yFlt) then
          BegiN
           cObject.Caption := '';
           If (i = 1) or (i = 2) then
           Begin
            (Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier1.bmp');
            Break;
           End;
    
           If i = 4 then
           Begin
            (Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier3.bmp');
            Break;
           End;
    
           If i >= 5 then
           Begin
            (Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier2.bmp');
            Break;
           End;
    
           (Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier'+IntToStr(i + 1)+'.bmp');
           Break;
          EnD;
         End;

    Мой высер. За неимением идей, больше ничего придумать не смог.

    Govnocoder#0xFF, 15 Января 2011

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

    +114

    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
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    TMapObj = record
        Size: integer;
        Selected, Valid: boolean;
        case Kind: TKind of
    // дохрена пропущено
       koTxr: (
            TxrFileName: string [31];
            tLast: integer;
            TxrCorrect: boolean;
            LODS: array [0 .. 3] of TBitmap;
            Pixel: TBitmap;
          );
          koItem: (
            Location: TLocation;
            ItemEndSel: boolean;        // выделена ли для перетаскивания
            TimeBeforeReborn: integer;  // времени до восстановления
            DescrIndex: integer;        // индекс описателя
            Rotation: integer;
    
            TeamColor, EnemyColor: integer;
    
            iLast: integer;
    
            CannotGet: boolean;
    
            case TKindItem of
              kiWeapon: (
                iwpFallen: boolean;
                iwpBulletsLeft: integer;
                iwpState: TWeaponState;
              );
              kiHuman: (
                ihState: integer;
              );
              kiFlag: (
                ifState: TFlagState;
                ifHome: integer;
              );
              kiScepter: (
                isState: TScepterState;
              );
          );
          koItemDescr: (
            ItemFileName: string [31];  // файл с описанием предмета
            idLast: integer;
            ItemCorrect: boolean;
            ItemName: string [31];      // название предмета
            SpriteIndName: string [31];
            SpriteInd: integer;         // картинка
            RebornTime: integer;        // время перерождения
            case KindItem: TKindItem of
              kiHealth: (
                hlCount: integer;
              );                          
              kiShield: (
                shCount: integer;
              );
              kiFlag: (
                flTeam: integer;
              );        
              kiSL: (
                slTeam: integer;
              );
              kiAmmo: (
                amCount: integer;
                amIndex: integer;       // тип патрона
              );
              kiWeapon: (                          // всё про пушку
                wpAmmoIndex: integer;              // тип патронов
                wpKeyNumber: integer;              // кнопка на клавиатуре
                wpBulletsInCharge: integer;        // патронов в обойме
                wpInitBullets: integer;            // изначальное число патронов
                wpMaxBullets: integer;             // максимальное число патронов
                wpShotBullets: integer;            // патронов за раз
                wpReloadTime, wpShotTime: integer; // время перезарядки, скорострельность (скорострельность в миллисекундах)
                wpDispersion, wpKickBack: integer; // разброс самого оружия и отдача
                wpBasic: integer;       // базовое ли
                wpDamage: integer;      // урон
                wpDistance, wpBulletSpeed: integer;    // предельная дальность выстрела, скорость пуль
                wpSound: integer;       // номер ноты
                wpColor: TColor;        // цвет
              );
          );   
          koBullet: (
            bLast: integer;
    
            BLocP: array [0 .. 1] of TPoint;
            BLocRoom: integer;
    
            BVector: TPoint;           // нормализованный вектор направления
    
            BDamage: integer;          // параметры, которые надо передавать в процедуру создания пули
            BSpeed: integer;
            BLengthLeft: integer;
            BOwner: integer;
            Bn, Bm: TDistFunc;
            BColor: TColor;
        );
    end;

    Меня попросили показать, до чего может довести структурное программирование при отрицании ООП. Разветвлённая структура с кучей ветвей.
    Для лучшего эффекта обмазываться вместе с http://govnokod.ru/4249

    TarasB, 13 Января 2011

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