Здесь следует дать небольшой комментарий.
program Trial; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Registry, Dialogs; // Для TRegistry и ShowMessage
{$R *.RES}
var Reg: TRegistry; N: Integer; begin Reg := TRegistry.Create; with Reg do
begin
OpenKey('software', True);
OpenKey('TrialProg', True);
if ValueExists('MaxRun') then // Первый запуск? begin // - Нет N := ReadInteger('MaxRun')-1; if N>
=0 then WriteInteger('MaxRun', N) end else begin // -Да, первый запуск N := 5; WriteInteger('MaxRun', N) end; Free end; if N>
0 then
begin
Application.CreateForm(TForm1, Form1);
Application.Run; end else ShowMessage('Исчерпано максимальное количество запусков'+ ' пробной версии программы') end.
Здесь следует дать небольшой комментарий. Модуль Registry декларирует класс TRegistry, который представляет программисту доступ к системному реестру Windows. С помощью двух обращений к функции TRegistry.OpenKey создается и/или открывается ключ HKEY_CURRENT_USER\Software\TrialProg системного реестра. Функция TRegistry.ValueExists возвращает True, если этот ключ содержит параметр с именем MaxRun и для него определено значение. При первом запуске приложения это не так, поэтому процедурой WriteInteger создается параметр и для него указывается начальное значение 5 (максимальное количество прогонов программы). При каждом следующем запуске этот параметр уменьшается на 1 и в момент, когда он становится равен 0, приложение блокирует создание и отображение главного окна.