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

    Всего: 3

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

    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
    type
    .....
    TSyncParamsPasser = class
       PassedJSON:String;
       constructor Create(RJS:String);
       procedure ProcessExternalCmd;
      end;
    .....
    .....
    procedure TForm1.TCPServerExecute(AContext: TIdContext);
    begin
    .....
       SyncParamsPasser:=TSyncParamsPasser.Create(CustomData);
       TIdSync.SynchronizeMethod(SyncParamsPasser.ProcessExternalCmd);
       FreeAndNil(SyncParamsPasser);
    .....
    end;
    .....
    constructor TSyncParamsPasser.Create(RJS:String);
    begin
     PassedJSON:=RJS;
    end;
    
    procedure TSyncParamsPasser.ProcessExternalCmd;
    var
     JSON:TJSONObject;
    begin
     JSON:=TJSONObject.ParseJSONValue(PassedJSON) as TJSONObject;
    .....

    Событие OnExecute компонента TCPServer вызывается из рабочего потока, в котором обрабатывается входящее подключение.

    Способ передачи параметров в процедуру, выполняющуюся внутри Synchronize, с помощью класса.
    Говно или сойдёт?

    SmseR, 16 Марта 2021

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

    +75

    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
    procedure TForm1.RunCode(Code:String;A,B:Cardinal);
    var
    i,j:Cardinal;
    dpth:Word;
    itrCounter:Integer;
    ans:Integer;
    begin
     i:=A-1;
      repeat
       i:=i+1;
        if Code[i]='>' then
         if p=30000 then p:=1 else p:=p+1;
        if Code[i]='<' then
         if p=1 then p:=30000 else p:=p-1;
        if Code[i]='+' then allspace[p]:=allspace[p]+1;
        if Code[i]='-' then allspace[p]:=allspace[p]-1;
        if Code[i]='.' then Memo2.Lines.Text:=Memo2.Lines.Text + Chr(allspace[p]);
        if Code[i]='[' then
         begin
          dpth:=0;
          j:=i;
          repeat
           if (Code[j]=']') and (dpth>0) then dpth:=dpth-1;
           j:=j+1;
           if Code[j]='[' then dpth:=dpth+1;
           if j>B then
            begin
             ShowMessage('Обнаружен незакрытый цикл. Выполнение остановится');
             running:=False;
             Exit;
            end;
          until (Code[j]=']') and (dpth=0);
          itrCounter:=0;
          while allspace[p]<>0 Do
           begin
            if running=False then Exit;
            RunCode(Memo1.Text,i+1,j-1);
            itrCounter:=itrCounter+1;
            if itrCounter=10000000 then
             begin
              ans:=MessageDlg('Выполнение программы вероятно зациклилось (прошло уже 10 000 000 итераций). Возможно код содержит ошибки.' + #13 + 'Остановить выполнение?',mtConfirmation,[mbYes,mbNo],0);
              if ans=mrYes then running:=False;
              if ans=mrNo then itrCounter:=0;
             end;
           end;
          i:=j;
         end;
        if Code[i]=',' then EnterChar;
       Application.ProcessMessages;
      until (i>=B) or (running=False);
    end;

    Процедура интерпретации brainfuck кода

    SmseR, 27 Ноября 2012

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

    +87

    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 GenerateMines; // Процедура генерации мин
    label
    again;
    var
    t,m:Integer; // Переменные для цикла
    i,j:Byte; // Координаты на поле
    bufer:String; // Вспомогательная переменная цикла. Хранит текущие сгенерированные координаты мины для записи в массив
    begin
    Randomize;
    for t:= 1 To mines Do
    begin
    again:
      i:=Round(Random*9+1);
      j:=Round(Random*9+1);
      bufer:=IntToStr(i) + ',' + IntToStr(j); // Создание строковой записи коордитаты мины
      for m:= 1 To 100 Do // Цикл для проверки, есть ли сгенерированная координата в массиве
      begin
        if bufer = mines_a[m] then goto again; // Если сгенерированная координата в массиве есть, то программа генерирует новые координаты
      end;
      mines_a[t]:=bufer; // Запись новой координаты в массив
      field[i,j]:=9; // Добавление мины на поле в сгенерированные координаты
    end;
    end;

    Процедура генерации мин в сапёре. Говно или не?

    SmseR, 10 Января 2012

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