Активация по серийнику Delphi

Активация по серийнику Delphi

Тема в разделе "Темы со старого форума", создана пользователем Бэкап, 30.07.2015.

Загрузка...
Ответов: 0 Просмотров: 429 Ответить в теме
Воспользуйтесь функцией автоматического продвижения темы для увеличения числа просмотров темы, продаж платного контента и узнаваемости Вашего бренда. Услуга продвижения действует на протяжении 3-х дней и стоит всего 50 STF Wallet.

Продвинуть тему
  1. Бэкап
    Доброго времени суток, Форумчане!
    В данной теме я расскажу вам о том, как добавить своей программе защиту по серийному ключику.
    Повествовать я буду не о простой проверке текста
    ( if edit = "123" then ... ), а расскажу как сделать проверку ключа на соответствие определённому алгоритму. Точнее сказать, мы сможем их генерировать специальным генератором ключей.

    Итак, предисловие на этом закончилось. Приступаем к разработке.
    Для начала настроим форму:


    1. Создаём новую форму.
    2. Редактируем параметры формы по желанию.
    3. Кидаем на форму компонент Edit.
    4. Кидаем на форму компонент Button, точнее кнопку.
    5. Стираем текст в edit и изменяем текст в нашей кнопке.
    Переходим к кодингу:

    Для начала сделаем так, чтобы текст в edit разбивался ("123456789" => "123-456-789").
    Для этого в событие Edit "onChange" пишем:
    Код:
    if ( length(edit1.Text) = 3 ) then edit1.Text:= edit1.Text + '-';
    if ( length(edit1.Text) = 7 ) then edit1.Text:= edit1.Text + '-';
    Edit1.SetFocus;
    Edit1.SelLength:=0;
    Edit1.SelStart:=Length(edit1.Text);
    Теперь сделаем проверку ключа по алгоритму. Для урока придумаем что-то простое.
    Например: 1 колонка должна в сумме быть равной 3 колонке. А цифры 2 колонки должны в суме дать, к примеру, 16.
    Реализуем это в событии кнопки "onClick", процедура будет выглядеть вот так:

    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    var k1, k2, k3:integer;
    begin
    if ( (length(edit1.Text) = 11) ) then
    begin
      k1:= StrToInt(edit1.Text[1]) + StrToInt(edit1.Text[2]) + StrToInt(edit1.Text[3]);
      k2:= StrToInt(edit1.Text[5]) + StrToInt(edit1.Text[6]) + StrToInt(edit1.Text[7]);
      k3:= StrToInt(edit1.Text[9]) + StrToInt(edit1.Text[10]) + StrToInt(edit1.Text[11]);
      if ( (k1 = k3) and (k2 = 16) ) then
      begin
        showmessage('Программа активирована!');
        //Действие после активации.
      end
      else showmessage('Ключ не соответствует алгоритму!');
    end
    else showmessage('Неверный ключ');
    end;
    
    Теперь напишем генератор ключей. Для этого нам будет достаточно поставить на форму всего одну кнопку. Генерировать мы будем путём генерации псевдослучайных чисел, и их проверки (лёгкий но не совсем правильный способ). Процедура:
    Код:
    procedure TForm1.Button2Click(Sender: TObject);
    var k1, k2, k3, a, b, c, z, x, v:integer;
      key:string;
    label no;
    begin
    no:
    Randomize;
    a:= (Random(9) + 1);
    b:= (Random(9) + 1);
    c:= (Random(9) + 1);
    while (k2 <> 16) do
    begin
    Randomize;
    z:= (Random(9) + 1);
    x:= (Random(9) + 1);
    v:= (Random(9) + 1);
    k2:= z + x + v;
    end;
    key:= inttostr(a) + inttostr(b) + inttostr(c) + '-';
    key:= key + inttostr(z) + inttostr(x) + inttostr(v) + '-';
    key:= key + inttostr(b) + inttostr(c) + inttostr(a);
    showmessage('KEY: ' + key);
    end;

     
    30.07.2015 Сообщений: Симпатий:
В этой теме всего одна страница
Вам, как гостю, ограничены возможности взаимодействия с темами. Пройдите бесплатную регистрацию и откройте для себя море возможностей.