Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Пасхальные яйца в Delphi

01.01.2007
Пасхальные яйца были придуманы самими разработчиками программного продукта, чтобы хранить в них информацию о себе. Однако потом пасхальные яйца стали использоваться для небольших игрушек или смешных надписей.

Чтобы увидеть пасхальное яйцо, пользователь должен знать специальную команду или последовательность нажатия клавиш; например, нажать в нужном месте или отредактировать секретный файл. Другими словами, пасхальные яйца существуют в виде недокументированного кода, скрытого внутри операционной системы, приложения, Web-браузера, игры, и т.д.

Компилятор Delphi в данном случае не является исключением и каждая его версия содержит скрытые сообщения. Как правило, это список разработчиков, но есть и исключения из правил. Чтобы определить, какого рода яйцо скрывается в Delphi, можно покликать по ссылкам в окошке "Elsewhere on the Web".

Создание Пасхального яйца

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

Итак, проделаем следующее:

Выберите форму, которая будет использоваться для запуска яйца.

Объявите целую (integer) переменную (с именем: icnt, в секции private):

private

icnt: integer;

Добавьте две константы (в секции interface):

const
  sEgg = 'ADPRULEZ';
  iEggLen = Length(sEgg); 

Добавьте следующий код в обработчик события OnCreate:

procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
  icnt := 1;
end;

Допустим, наше пасхальное яйцо будет запускаться, когда пользователь наберёт ADPRULEZ, при нажатой клавише CTRL key. Тогда событие OnKeyDown будет выглядеть следующим образом:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
  if ssCtrl in Shift then
  begin
    if Key = Ord(sEGG[icnt]) then
    begin
      if icnt = iEggLen then
      begin
        ShowMessage('About Delphi Programming Easter Egg!');
        icnt := 1;
      end
      else
        icnt := icnt + 1;
    end
    else
      icnt := 1;
  end;
end;

Как это работает?

Секретное слово, которое активизируейт пасхальное яйцо хранится в константе sEgg (ADPRULEZ). Целая переменная icnt служит для подсчёта комбинаций клавиш. В обработчике события OnCreate свойство KeyPreview устанавливается в True. Таким образом Форма начинает получать события от клавиатуры до того, как появится. Основной код находится в событии OnKeyPress. Сперва проверяется - была ли нажата клавиша Ctrl. Если так, то проверяется последняя комбинация клавиш в той последовательности, в которой мы её задали. Если "секретная" комбинация была набрана, то появится диалоговое окошко с надписью: 'About Delphi Programming Easter Egg!'

Если Вам лениво набирать коды, то можно просто разместить на форме секретную область. Теперь достаточно будет кликнуть мышкой в это крохотное место на форме и наш скрытый код запустится. Для этого поместим код в обработчик события OnMouseDown. Главное, чтобы это место на форме не заслоняли никакие визуальные компоненты!

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
  SecretSpot: TPoint;
begin
  SecretSpot.x := 1; {наш секретный пиксель находится}
  SecretSpot.y := 1; {в вехнем левом углу формы}
 
  if (X=SecretSpot.x) and (Y=SecretSpot.y) then
    ShowMessage('Secret place!')
end;

Конечно же, ничего нового и сверхсекретного в этой статье не описывается, однако пользователи любят охотиться за всевозможными недокументированными возможностями той или иной программы, так почему бы не удовлетворить их желание?


Автор: Матвеев Игорь

 

Недавно я прочитал где-то о проекте JEDI и о том, что если в Delphi версии 6.0 (В остальных не знаю) в окне "О Delphi..." (Помошь->О Delphi...) при нажатой клавише Alt нажать последовательно J E D I - симпатично проплывет объявление об этом проекте. Сегодня я установил себе C++Builder и совершенно случайно заметил, что там все в том же диалоговом окне "About" при нажатой клавише Alt нажать T - показывается "C++Builder Team". Вот я и заинтересовался подобными штучками в продуктах Borland.

Итак, после определенного ряда испытаний удалось выяснить:

Delphi 6.0: (При нажатой клавише Alt)

1: J E D I

Информация о пректе JEDI.

2: T E A M

Команда разработчиков Delphi.

3: Q U A L I T Y

Информация о Delphi QA Staff.

4: D E V E L O P E R S

Информация о Delphi R&D Staff.

C++Builder 4.253 (При нажатой клавише Alt)

1: T

Команда разработчиков C++Builder.

2: D

Информация о C++Builder R&D Staff.

3: V E R S I O N

Информация о версии.

https://delphiworld.narod.ru/

DelphiWorld 6.0