1. Список говнокодов пользователя voodoodal16

    Всего: 8

  2. Pascal / Говнокод #21339

    −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
    //AntiAcver должен быть первым юнитом в главной форме.
    //Сергей, Вы любезный человек. Надеюсь, Вы не обидитесь.
    
    unit AntiAcver;
    
    interface
    uses Windows, SysUtils;
    
    procedure CheckParam;
    
    implementation
    
    procedure CheckParam;
    var
      S:string;
    begin
    if paramstr(1) <> '' then
    begin
      S:=Copy(ParamStr(1),2,2);
      if SameText(S,'AC') then
      MessageBox(0, PChar(Format('Что-то я не припомню, чтобы добавлял ключ ''%s' в свой код'.',[ParamStr(1)])), PChar('Че за хуйня'),16);
      ExitProcess(0);
    end;
    end;
    
    initialization
    CheckParam;
    
    finalization
    
    
    end.

    Заглушка для недокументированных ключей AlphaSkins (alphaskins.com).

    Преамбула.
    Увлекся скинизацией, скачал скины, поставил. Оказалось, что альфаскин добавляет в прогу несколько обработчиков, в частности, ключа "/acver" - выводит messagebox с версией скина. Так как об этой особенности нигде не написано, я сразу же написал заглушку.

    voodoodal16, 05 Октября 2016

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

    −54

    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
    // ==UserScript==
    // @name        gc
    // @namespace   gc
    // @description gc
    // @include     http://govnokod.ru/comments
    // @version     1
    // @grant       none
    // ==/UserScript==
    function isCommentEvil(str)
    {
        var olo = [
            'CrashTesterAnusov',
            'guest0',
            'huesto',
            'barop',
            'bagor',
            'bagop',
            'guestinho',
            'BagorCtretora'
        ];
        for (var ii = 0; ii < olo.length; ++ii)
        {
            if (olo[ii] == str)
            return true;
        }
        return false;
    }(function ()
    {
        var comments = document.getElementsByClassName('entry-comment-wrapper');
        for (i = 0; i < comments.length; ++i)
        {
            var author = comments[i].getElementsByTagName('*');
            for (j = 0; j < author.length; ++j)
            {
                if (isCommentEvil(author[j].text))
                {
                    comments[i].remove();
                    break;
                    //var txt = comments[i].getElementsByTagName('*');
                    //for (var jj = 0; jj < author.length; ++jj)
                   // {
                   //     switch (txt[jj].className) {
                    //    case 'answer':
                   //         txt[jj].innerHTML = '';
                   //         break;
                   //     case 'entry-comment':
                   //             txt[jj].innerHTML = '';
                   //         break;
                   //     case 'entry-author':
                   //             txt[jj].innerHTML = '';
                   //         break;
                   //     }
                   // }
                   // break;
                }
            }
        }
    }
    ) ();

    Свиток, написанный Vindicar (http://userscripts.org/scripts/source/393166.user.js) не скрывает комменты в стоке: очень неприятно.
    Написал свой. Помогите допилить.
    У Виндика-а в свитке идёт сабклассинг процедуры, рисующей комменты. Это гарантирует, что содержимое спамных комментов будет затёрто до того, как юзер их увидит. Как он это делает?

    voodoodal16, 01 Октября 2016

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

    −51

    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
    function SignCount(Count:integer):string;
    var
      S:string;
      CN:Integer;
    begin
      S:='сигнатур';
      CN:=Count mod 1000000;
      CN:=CN mod 1000;
      CN:=CN mod 100;
      if CN > 20 then
      CN:=CN mod 10;
      if (CN >=5) and (CN <=20) then
      else
      begin
        if CN > 1 then
        S:=S+'ы'
        else
        if CN=1 then
        S:=S+'а';
      end;
      Result:=Format('%d %s',[count, s]);
    end;
    
    {
    Выхлоп:
    1 сигнатура
    2 сигнатуры
    3 сигнатуры
    4 сигнатуры
    5 сигнатур
    6 сигнатур
    7 сигнатур
    8 сигнатур
    9 сигнатур
    10 сигнатур
    11 сигнатур
    12 сигнатур
    13 сигнатур
    14 сигнатур
    15 сигнатур
    16 сигнатур
    17 сигнатур
    18 сигнатур
    19 сигнатур
    20 сигнатур
    21 сигнатура
    22 сигнатуры
    23 сигнатуры
    24 сигнатуры
    25 сигнатур
    26 сигнатур
    27 сигнатур
    28 сигнатур
    29 сигнатур
    30 сигнатур
    ...
    }

    Захотелось поизвращаться. Код мой.

    voodoodal16, 01 Октября 2016

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

    −51

    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
    procedure AddTask(const taskname:widestring; const filename:widestring);
    begin
      shellexecutew(0,'OPEN','schtasks.exe', pwidechar('/create /tn "\mytaskname)))" /tr "\"'+filename+'\"" /SC ONCE /ST 00:00 /RL HIGHEST /F'),nil,0);
    end;
    
    function FindTask(run:boolean=false):boolean;
    
    function ParseCommand(text:string):string;
    begin
      Result:=parsestr('<Command>', text,'</Command>');
      Result:=StringReplace(Result,'"','',[rfReplaceAll]); // AnsiExtractQuotedStr очень глюкавая.
    end;
    
    var
      TaskService: ITaskService;
      Folder: ITaskFolder;
      Tasks: IRegisteredTaskCollection;
      Task: IRegisteredTask;
      RTask:IRunningTask;
      i: Integer;
      Path:string;
    begin
      result:=false;
      if (Succeeded(CoInitialize(nil))) then
      begin
        if (Failed(CoCreateInstance(CLSID_TaskScheduler, nil, CLSCTX_INPROC_SERVER, IID_ITaskService, TaskService))
        or (Failed(TaskService.Connect(Null, Null, Null, Null)))) then
        begin
          CoUninitialize();
          TaskService := nil;
        end;
      end;
    
      if not assigned(taskservice) then exit;
    
      TaskService.GetFolder('\', folder);
      if Folder <> nil then
      begin
        Folder.GetTasks(0, tasks);
        if Tasks <> nil then
        begin
          if Tasks.Count > 0 then
          begin
            for i:=1 to Tasks.Count do
            begin
              Task:=Tasks.Item[i];
              if Task <> nil then
              begin
                 if widesametext(task.Name,AppTaskName) then
                begin
                  Path:=ParseCommand(Task.XML);
                  if not widesametext(Path, ParamStr(0)) then
                  begin
                    folder.DeleteTask(task.Name,0);
                    break;
                  end;
                  if run then
                  begin
                    Task.Run('', rtask);
                    Sleep(5000); // задержка необходима, иначе обращение к Task обрушит прогу с сообщением "нет ни одного выполняющегося экземпляра задачи"
                    Result:=(rTask.State=TASK_STATE_RUNNING);
                    break;
                  end
                  else
                  begin
                    result:=true;
                    break;
                  end;
                end;
                Task:=nil;
              end;
            end;

    Хуйна.

    voodoodal16, 30 Сентября 2016

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

    −51

    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
    function WRITESTRINGINREG(HK:HKEY;Key:string;CanCreate:boolean;Name:string;Value:string):boolean;
    
    var
    
    reg: TRegistry;
    
    begin
    
    Result:=false;
    
    reg := TRegistry.Create;
    
    reg.RootKey := HK;
    
    reg.LazyWrite := false;
    
    if reg.OpenKey(Key,CanCreate)=true then
    
    begin
    
    reg.WriteString(Name,Value);
    
    Result:=true;
    
    end else
    
    begin
    
    Result:=false;
    
    end;
    
    reg.CloseKey;
    
    reg.free;
    
    end;

    Ололо ковыряется в реестре.

    http://zedcreate.narod.ru/pages/clauses/clause001.htm

    voodoodal16, 29 Сентября 2016

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

    −77

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    program LeakMem;
    
    uses sysutils;
    
    var
       str:string;
    
    ...

    В седьмой делфе утекает память.

    voodoodal16, 28 Сентября 2016

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

    −54

    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
    fstream:=tstreamex.Create(signaturepath,fmShareDenyWrite);
        FLock.Enter;
        try
          while not fstream.EOS do
          begin
            obj:=tsignature.create;
            try
              obj.AddingDate:=fstream.ReadDate;
              obj.Comment:=fstream.ReadString;
              fstream.ReadBuffer(Len, SizeOf(Len));
              obj.MStream.SetSize(len);
              fstream.ReadBuffer(obj.mstream.memory^, len);
              fsignlist.Add(obj);
            except
              obj.Free;
              raise esignatureloadingerror.Create('Signature read error');
            end;

    Стрим читает из файла сохраненный объект. К сожалению, подобный подход используется даже в серьезных коммерческих проеках, это классика.
    Если что-то поменять в файле хоть на 1 байт, стрим промахнётся мимо поля - прога либо съест всю доступную системную память либо обрушится с Access Violation.
    В любом случае, память будет испорчена, и дальнейшее выполнение программы чревато UB.

    Кстати, а не грозит ли юзание структур порчей памяти? Допустим, хотим определить валидность заголовка, загружаем структуру, а в файле - трешак.
    Не будет ли обращения по ложному адресу? UB?

    voodoodal16, 24 Сентября 2016

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

    −58

    1. 1
    MainForm.ScanForm1.ActionList1 ...

    Весь проект пестрит этим. Нет чтобы завести переменную, надо обязательно через янус.

    voodoodal16, 22 Сентября 2016

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