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

    +104

    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
    procedure TForm1.save_to_file_coordinates;
    label
    f,d;
    begin
     f:begin
     if str1=0 then
      begin
       memo1.items.Strings[0]:=memo3.Lines.Strings[0];
       str1:=str1+1;
      end;
     if str1=b then
      begin
        goto d;
      end;
     begin
       memo1.items.Strings[strtoint(floattostr(str1))]:=memo3.Lines.Strings[strtoint(floattostr(str1))];
       str1:=str1+1;
     end;
     goto f;
     end;
      d:begin
          begin
             if b=i then
              begin
                exit;
              end;
              begin
                memo2.items.Strings[strtoint(floattostr(str2))]:=memo3.Lines.Strings[strtoint(floattostr(b))];
                b:=b+1;
                str2:=str2+1;
                end;
      goto d;
    end;
    end;
    
    end;

    mistmax, 10 Июня 2010

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

    +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
    procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);
    begin
    If (UpDown2.Position = 0) or (UpDown2.Position = 5) or (UpDown2.Position = 6) or
       (UpDown2.Position = 7) or (UpDown2.Position = 8) or (UpDown2.Position = 9) or
       (UpDown2.Position = 10) or (UpDown2.Position = 11) or (UpDown2.Position = 12) or
       (UpDown2.Position = 13) or (UpDown2.Position = 14) or (UpDown2.Position = 15) or
       (UpDown2.Position = 16) or (UpDown2.Position = 17) or (UpDown2.Position = 18) or
       (UpDown2.Position = 19) or (UpDown2.Position = 20) or (UpDown2.Position = 25) or
       (UpDown2.Position = 26) or (UpDown2.Position = 27) or (UpDown2.Position = 28) or
       (UpDown2.Position = 29) or (UpDown2.Position = 30) or (UpDown2.Position = 35) or
       (UpDown2.Position = 36) or (UpDown2.Position = 37) or (UpDown2.Position = 38) or
       (UpDown2.Position = 39) or (UpDown2.Position = 40) or (UpDown2.Position = 45) or
       (UpDown2.Position = 46) or (UpDown2.Position = 47) or (UpDown2.Position = 48) or
       (UpDown2.Position = 49) or (UpDown2.Position = 50) or (UpDown2.Position = 55) or
       (UpDown2.Position = 56) or (UpDown2.Position = 57) or (UpDown2.Position = 58) or
       (UpDown2.Position = 59) or (UpDown2.Position = 60)
        then StaticText4.Caption := 'минут';
    
    If (UpDown2.Position = 1) or (UpDown2.Position = 21) or (UpDown2.Position = 31) or
       (UpDown2.Position = 41) or (UpDown2.Position = 51)
    then StaticText4.Caption := 'минуту';
    
    If (UpDown2.Position = 2) or (UpDown2.Position = 22) or (UpDown2.Position = 23) or
       (UpDown2.Position = 24) or (UpDown2.Position = 32) or (UpDown2.Position = 33) or
       (UpDown2.Position = 34) or (UpDown2.Position = 42) or (UpDown2.Position = 43) or
       (UpDown2.Position = 44) or (UpDown2.Position = 52) or (UpDown2.Position = 53) or
       (UpDown2.Position = 54)
    then StaticText4.Caption := 'минуты';
    
    If UpDown2.Position>60 then ShowMessage('больше нельзя');
    
    end;

    Дао создания таймера обратного отсчета.
    Канон второй: вычисление плюральных окончаний.
    Комментарии и форматирование авторские.

    bugmenot, 08 Июня 2010

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

    +98

    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
    procedure TForm1.Timer1Timer(Sender: TObject);  //ПРОБЛЕМА ТУТ
    begin
    sec:=sec-1;
    ShowTime;     //показывать время
    
    If (sec=0) and (min=0) and(chas>0) then
    begin
    chas:=chas-1;
    min:=59;
    sec:=60;
    end;
    
    If (sec=0) and (min>0) and (chas=0) then
    begin
    min:=min-1;
    sec:=60;
    end;
    
    If (sec=0) and (min>0) and (chas>0) then
    begin
    min:=min-1;
    chas:=chas-1;
    sec:=60;
    end;
    
    
    If (chas=0) and (min=0) and (sec=0) then
    begin
    Timer1.Enabled:=false;
    Button1.Enabled:=True;
    Button2.Enabled:=False;
    Edit1.Enabled:=True;
    Edit2.Enabled:=True;
    Edit3.Enabled:=True;
    
    end;
    
    
    
    end;

    Дао создания таймера обратного отсчета.
    Канон первый: устаревшая и неудобная шестидесятиричная система.
    Комментарии и форматирование авторские.

    bugmenot, 08 Июня 2010

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

    +100

    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
    procedure WriteCharXY(_bx,by:integer; ch:char; tcol:word);
    var buf:array[1..18,1..12] of word;
    XOfs:longint;
    x,y,px,py:integer;
    begin
    XOfs:=GetCharOffset(ch);
    if xofs=0 then fillchar(buf,sizeof(buf),200) else
    fromXMS(XOfs,addr(buf),432);
    for y:=1 to 18 do
    for x:=1 to 12 do begin
    if buf[y,x]=0 then begin
       px:=_bx+x; py:=by+y;
       asm
       mov   bx,px;  add   bx,actviewport.x1;  cmp   bx,fillviewport.x1;
       jl    @end;  cmp   bx,fillviewport.x2; jg    @end;
       mov   cx,currentmode.scanline;  cmp   bx,cx;  jnb   @end;
       mov   ax,py;  add   ax,actviewport.y1;  cmp   ax,fillviewport.y1;
       jl    @end;  cmp   ax,fillviewport.y2;  jg    @end;
       add   ax,pageadd;  mul   cx;  add   bx,bx;
       add   ax,bx;  adc   dx,0;  mov   si,ax;
       cmp   dx,lastbank;  je    @next;  push  dx;
       call  nearsetbank2;  @next:  mov   es,[currentmode.writeptr];
       mov   ax,tcol;  {cmp   writemode,0;  jne   @doxor;}
       mov   es:[si],ax;  {jmp   @end;  @doxor: xor   es:[si],ax;}  @end:
       end;
    end;
    end;
    end;
    
    procedure WriteStringXY(x,y,maxx:integer; s:string; col:word);
    var tx,ty:integer; i:word;
    begin tx:=x; ty:=y;
    for i:=0 to length(s) do begin
    writecharXY(tx,ty,s[i],col);
    inc(tx,GetCharWidth(s[i]));
    if (tx>=maxx) and (s[i]=' ') then begin inc(ty,18); tx:=x; end;
    end;
    end;
    
    procedure Write5Strings(x,y,maxx:integer; col:word; s1,s2,s3,s4,s5:string;
    letterdelay:byte);
    var tx,ty:integer; t,i:word;
    st:array[1..5] of string;
    begin tx:=x; ty:=y;
    st[1]:=s1; st[2]:=s2; st[3]:=s3; st[4]:=s4; st[5]:=s5;
    for t:=1 to 5 do begin
    if length(st[t])=0 then exit;
       for i:=1 to length(st[t]) do begin
       writecharXY(tx,ty,st[t][i],col);
       if letterdelay>0 then pdel(letterdelay);
       inc(tx,GetCharWidth(st[t][i]));
       if (tx>=maxx-100) and (st[t][i]=' ') then begin
       inc(ty,18); tx:=x; end;
       end;
    end;
    end;

    Молодость.

    runewalsh, 01 Июня 2010

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

    +101

    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
    function IPtoDWORD(const s: string):DWORD;
    var
    L: TStringList;
    b: packed array [0..3] of byte;
    i: Integer;
    begin
    Result := 0;
      L := TStringList.Create;
        try
          L.Delimiter := '.';
            L.DelimitedText := s;
              for i := 0 to 3 do
                b[3 - i] := StrToInt(L[i]);
                  Result := pdword(@b[0])^;
        finally
          L.Free
        end;
    end;
    ...
    if (NewIP >= IPtoDWORD('192.168.0.0')) and (NewIP <= IPtoDWORD('192.168.0.255')) then
      //Пускаем
        else
          ServerSocket.Socket.Connections[i - 1].SendText('запрет'); //Запрет
            ServerSocket.Socket.Connections[i - 1].Close; //Закрываем канал
              if (NewIP >= IPtoDWORD('193.168.0.0')) and (NewIP <= IPtoDWORD('193.168.0.255')) then
                //Пускаем
                if (NewIP >= IPtoDWORD('194.168.0.0')) and (NewIP <= IPtoDWORD('194.168.0.255')) then
                  //Пускаем
                    if (NewIP >= IPtoDWORD('195.168.0.0')) and (NewIP <= IPtoDWORD('195.168.0.255')) then
                      //Пускаем

    личинка быдлокодера в схватке с IPv4
    примечательно искрометное форматирование кода

    bugmenot, 01 Июня 2010

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

    +137

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Result, str, str1, str2, str3, str4, str5, str6 : string;
    PLen, stroka, i : integer;
    begin
    Randomize;
    str:='';
    Memo1.Clear;
    stroka := SpinEdit2.Value;
    str1 := '1234567890';
    str2 := 'abcdefghijklmnopqastuvwxyz';
    str3 := 'ABCDEFGHIJKLMNOPQASTUVWXYZ';
    str4 := '!@#$%^&*()_+|\=-<>.,/?''; :"][}{';
    str5 := 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
    str6 := 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
    PLen := SpinEdit1.Value;
    if CheckBox1.Checked = True
    then str:=str+str1;
    if CheckBox2.Checked = True
    then str:=str+str2;
    if CheckBox3.Checked = True
    then str:=str+str3;
    if CheckBox4.Checked = True
    then str:=str+str4;
    if CheckBox5.Checked = True
    then str:=str+str5;
    if CheckBox6.Checked = True
    then str:=str+str6;
    if CheckBox1.Checked or
    CheckBox2.Checked or
    CheckBox3.Checked or
    CheckBox4.Checked or
    CheckBox5.Checked or
    CheckBox6.Checked = False
    then
    MessageDlg('Выберите символы, которые вы хотите использовать!',mtWarning,[mbOK],0)
    else
    for i := 1 to stroka do begin
    Result := '';
    repeat
    Result := Result+str[Random(Length(str))+1];
    until (Length(Result) = PLen);
    Memo1.Lines.Add(Result);
    end;
    end;

    Пример генератора паролей на Delphi
    http://delphistudio.ru/primery-na-delphi/sistema/119-generator-porolej.-primer-na-delphi.html

    вспоминается цитата какого говнокодера с баша
    http://bash.org.ru/quote/406823
    которую быдлота наплюсовала

    3.14159265, 31 Мая 2010

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

    +86

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    procedure Click(H: hWnd);
    begin
      SendMessage(H, wm_LButtonDown, 0, 0);
      SendMessage(H, wm_LButtonUp, 0, 0);
    end;

    Как я круто по-хакерски сэмулировал нажатие на кнопку или на радиобаттон.

    TarasB, 26 Мая 2010

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

    +107

    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
    var
      OGTC: cardinal; // для сверки с таймером
    
    procedure CheckPhys;
    begin
      if OGTC < GetTickCount then begin
        Phys;   // тут считается вся игровая физика и все изменения состояний. Звуки тоже здесь.
        Inc(OGTC, dT);
      end;
    end;
    
    procedure Graph;     // процедура отрисовки графики
    var
      i: integer;
    begin
      CheckPhys;
      for i := 0 to ItemCount - 1 do with Items[i]^ do CopyPosition := Position; // делаем копию состояния перед отрисовкой мира!
      for i := 0 to ItemCount - 1 do begin
        ShowItem(Items[i]^);           // рисуем элемент мира
        CheckPhys;                     // проверяем, не пора ли снова считать физику
      end;
    end;
    
    procedure OnIdle;
    begin
      if PlayingGame then Graph;
    end;

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

    TarasB, 26 Мая 2010

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

    +116

    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
    for m:=0 to 9 do
          mas[m]:=inttostr(m);
      if ((Form1.edit1.text='')or(Form1.Memo2.text='')) then    begin
          if Form1.Memo2.text='' then
              ShowMessage('Ошибка! Введите пожалуйста текст или подключите файл,который необходимо расшифровать!!!');
          if Form1.edit1.text='' then
              ShowMessage('Ошибка! Введите пожалуйста ключ,которым будет расшифрован текст!!!');
        end
      else    begin
          //проверка ключа
          key:=Form1.edit1.text;
          k:=length(key);
          c:=0;
          k_p:=true;
          for j:=1 to k do
          for m:=0 to 9 do begin
              if (key[j]=mas[m]) then  
                  inc(c)
              else Begin
                  if (m=9) then
                    if (c=0) then Begin
                        ShowMessage('Ошибка!!!Введите пожалуйста ключ,которым будет расшифрован текст-целые числа');
                        k_p:=false;
                      end
                    else
                      c:=0;
                end;
            end;
        end;

    говнокриптография...

    3.14159265, 26 Мая 2010

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

    +98

    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
    //это как бы сортировка приоритетов
    Try
    Prior1:=StrToInt(Edit1.Text);
    Prior2:=StrToInt(Edit2.Text);
    Prior3:=StrToInt(Edit3.Text);
    Prior4:=StrToInt(Edit4.Text);
    Prior5:=StrToInt(Edit5.Text);
    except
    ShowMessage('Íåâåðíî çàäàíû ïðèîðèòåòû');   exit;
    end;
    min1:=100;
    If prior1<min1 then begin min1:=prior1; nmin1:=1; end;
    If prior2<min1 then begin min1:=prior2; nmin1:=2; end;
    If prior3<min1 then begin min1:=prior3; nmin1:=3; end;
    If prior4<min1 then begin min1:=prior4; nmin1:=4; end;
    If prior5<min1 then begin min1:=prior5; nmin1:=5; end;
    min2:=100;
    If (prior1<min2)and(prior1>min1) then begin min2:=prior1; nmin2:=1; end;
    If (prior2<min2)and(prior2>min1) then begin min2:=prior2; nmin2:=2; end;
    If (prior3<min2)and(prior3>min1) then begin min2:=prior3; nmin2:=3; end;
    If (prior4<min2)and(prior4>min1) then begin min2:=prior4; nmin2:=4; end;
    If (prior5<min2)and(prior5>min1) then begin min2:=prior5; nmin2:=5; end;
    min3:=100;
    If (prior1<min3)and(prior1>min2) then begin min3:=prior1; nmin3:=1; end;
    If (prior2<min3)and(prior2>min2) then begin min3:=prior2; nmin3:=2; end;
    If (prior3<min3)and(prior3>min2) then begin min3:=prior3; nmin3:=3; end;
    If (prior4<min3)and(prior4>min2) then begin min3:=prior4; nmin3:=4; end;
    If (prior5<min3)and(prior5>min2) then begin min3:=prior5; nmin3:=5; end;
    min4:=100;
    If (prior1<min4)and(prior1>min3) then begin min4:=prior1; nmin4:=1; end;
    If (prior2<min4)and(prior2>min3) then begin min4:=prior2; nmin4:=2; end;
    If (prior3<min4)and(prior3>min3) then begin min4:=prior3; nmin4:=3; end;
    If (prior4<min4)and(prior4>min3) then begin min4:=prior4; nmin4:=4; end;
    If (prior5<min4)and(prior5>min3) then begin min4:=prior5; nmin4:=5; end;
    min5:=100;
    If (prior1<min5)and(prior1>min4) then begin min5:=prior1; nmin5:=1; end;
    If (prior2<min5)and(prior2>min4) then begin min5:=prior2; nmin5:=2; end;
    If (prior3<min5)and(prior3>min4) then begin min5:=prior3; nmin5:=3; end;
    If (prior4<min5)and(prior4>min4) then begin min5:=prior4; nmin5:=4; end;
    If (prior5<min5)and(prior5>min4) then begin min5:=prior5; nmin5:=5; end;
    
    //далее горы подобного кода (где-то 20-30 страниц):
    hile t<=60 do begin
    Application.ProcessMessages;
    
    t:=t+1;
    Sleep(100);
    
        If nmin1=1 then begin
    
        If t-tpi1=t1 then begin
        i1:=i1+1;
        datetime:=now;
    x1:=random(311)/10+29+random(10)/10;
    table1.Insert;
    table1.FieldByName('znachenie').AsFloat:=x1;
    table1.FieldByName('datchik').AsInteger:=1;
    table1.FieldByName('oshibka').AsBoolean:=False;
    table1.FieldByName('krit').AsBoolean:=False;
    table1.FieldByName('DateTime').AsDateTime:=Datetime;
    series1.AddXY(i1, x1, '',clred);
    if (x1>60)or(x1<30) then
    begin
    table1.FieldByName('oshibka').AsBoolean:=True;
      if (x1>60.5)or(x1<29.5) then begin
      table1.FieldByName('krit').AsBoolean:=True;
      Label1.Visible:=True;
      end;
    end;
    table1.Post;
    tpi1:=t;
    end; //end if
    
    end;
    If nmin1=2 then begin
    
       If t-tpi2=t2 then begin
       i2:=i2+1;
       datetime:=now;
    x2:=random(211)/10+9+random(10)/10;
    table1.Insert;
    table1.FieldByName('znachenie').AsFloat:=x2;
    table1.FieldByName('datchik').AsInteger:=2;
    table1.FieldByName('oshibka').AsBoolean:=False;
    table1.FieldByName('krit').AsBoolean:=False;
    table1.FieldByName('DateTime').AsDateTime:=Datetime;
    series2.AddXY(i2, x2, '',clgreen);
    if (x2>30)or(x2<10) then
    begin
    table1.FieldByName('oshibka').AsBoolean:=True;
      if (x2>30.5)or(x2<9.5) then begin
      table1.FieldByName('krit').AsBoolean:=True;
      Label1.Visible:=True;
      end;
    end;
    table1.Post;
    tpi2:=t;
    end;

    курсовая работа одного студента (идущего на красный диплом, кстати)

    GovnocoderJr, 25 Мая 2010

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