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

    +109

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    procedure TForm2.ExitButtonClick(Sender: TObject);
    begin
    Close;
    Form1.Close;
    end;

    Об Application.Terminate даже и не догадываемся...

    Запостил: PEMOHT, 12 Декабря 2010

    Комментарии (14) RSS

    • Halt;
      чтоб наверняка
      Ответить
      • asm
        @@1: HLT
        JMP @@1
        end;


        Чтоб точно ничего не выполнялось.
        Ответить
        • cli забыл
          Ответить
          • А как же NMI? Нужно перейти в нулевое кольцо и что-нибудь записать в контроллер прерываний, чтобы ещё NMI залочить.
            Ответить
          • во время 95-х виндов пробовал:)
            более того, если сделать cli и выполнять какой-то код, то там перестает работать многозадачность (в смысле все остальные задачи висят, кнопки типа Alt+Tab тоже не действуют). А вот в более поздних виндах не пробовал.
            Ответить
          • тогда уже:
            asm
              cli
              lock hlt
            end;
            Ответить
        • ммм....

          RST 0
          Ответить
    • Это такой особый эхит, terminate and stay resident
      Ответить
    • вообще, такой код вполне оправдан, когда надо выполнить OnClose, но вот закрытие второй формы - явно лишнее.
      Ответить
      • или когда ни Form1, ни Form2 не являются главной формой приложения.
        if Assinged(OnClose) then OnClose(Sender);
        Ответить
        • А потом внезапно делаем CanClose := false; в OnCloseQuery...
          Ответить
          • надо Action := caNone, правда не помню есть ли такое
            Ответить

    Добавить комментарий