valega.com/es
AVLock SIMPLE Ayuda en linea
Introducción
Que es AVLock SIMPLE?
Como adquirir AVLock SIMPLE?
Usando AVLock SIMPLE
Como instalar AVLock SIMPLE?
Claves de Registración (Keys)
Configuración
Usuarios e Instancias
Esquemas de protección
Ejemplos
Ejemplo 1
Ejemplo 2
Ejemplo 3
Ejemplo 4
Ejemplo 5
Ejemplo 6
Ejemplo 7
Ejemplo 8
Propiedades
Métodos
El Online License Manager (OLM)
Como's
La utilidad RegMonitor
La Utilidad KeyGen
La Utilidad CodeCheck
La Utilidad KeyCheck
Información adicional
Historia de versiones
Acuerdo de licencia

Ejemplo 5

Top  Previous  Next

EJEMPLO 5

 

Items

En este ejemplo aprenderá a

Esquemas de protección

Diagrama de flujo

Breve práctica con el ejemplo 5a

Iniciar el periodo trial

 

 

 

En este ejemplo aprenderá a:

1. Utilizar el componente AVLock SIMPLE en un esquema de protección con múltiples módulos (esquemas D, E y F).

2. Controlar varios módulos de la aplicación mediante el campo "Values".

3. Controlar el número de registros permitidos en una aplicación de base de datos utilizando el campo "Values".

4. Ver en un cuadro todos los datos de registración de la clave corriente registrada.

 

 

Esquemas de protección

Este ejemplo implementa los esquemas D, E y F

 

 

             Esquema D

layout03

      Esquema E

layout06

                  Esquema F

layout07

 

 

Y los implementa como se muestra en el siguiente diagrama de flujo:

 

 

 

 

 

Diagrama de flujo

 

demo05a01

procedure TForm1.FormCreate(Sender: TObject);

begin

DoRegister(False);

end;

 

function TForm1.maxrecords(n:integer):string;

begin

case n of

0: result:='50';

1: result:='200';

2: result:='1000';

3: result:='5000';

4: result:='20000';

5: result:='100000';

else result := 'Unlimited';

end;

end;

 

procedure TForm1.DoRegister(force:boolean);

var F : TRegForm;

begin

F:=TRegForm.Create(nil); //Create the registration Form

try

  if force or (keydata.DaysLeft < 15) then F.ShowModal;

finally

  FreeAndNil(F);

end;

if (keydata.Status = Registered) then begin

  maxrec:=maxrecords(Values2Num(keydata.Values,2));

  Button1.Enabled := (IsValueOn(keydata.Values,3,0));

  Button2.Enabled := (IsValueOn(keydata.Values,3,1));

  Button3.Enabled := (IsValueOn(keydata.Values,3,2));

end else begin

  maxrec := '50';

  Button1.Enabled := False;

  Button2.Enabled := False;

  Button3.Enabled := False;

  Form1.wait(10);

end;

LRecNo.Caption := maxrec;

end;

 

 

El esquema es el mismo que el el ejemplo 4 pero ahora se implementan los esquemas E y F. Para el esquema E se agrega el formulario Wait con una cuenta regresiva a fin de incentivar al usuario a registrarse. Y para el esquema F se controla la cantidad máxima de registros permitidos (se supone que se trata de una aplicación de base de datos).

 

 

La versión (5a) es la versión de desarrollo donde se agregaron botones utilitarios para iniciar el periodo trial y para borrar los datos de registración a fin de tener nuevamente la  aplicación en estado original.

La versión (5b) es la versión definitiva donde el periodo trial se inicia automáticamente y se retiraron los botones utilitarios.

 

Breve práctica con el ejemplo 5a

 

Desde el IDE de Delphi Abra el ejemplo 5a (\Examples\5\a)

 

 

Ejecutar la aplicación

Presione el botón runbutton o F9 para iniciar la ejecución del programa.  En unos instantes podrá ver el formulario de registración:

 

demo05a03

 

Note que el estado corriente de registración es "Not registered" (No registrado). Esto es debido a que se ejecutó por primera vez el programa y en las versiones (a) de desarrollo no se inicia automáticamente el periodo trial.

 

Ahora con el botón [Continue >>], como la aplicación no está registrada se muestra la pantalla Wait con la cuenta regresiva:

 

demo05a05

 

Esta pantalla también se mostrará al hacer click sobre el botón [Free Features] del formulario principal.

 

Tenemos dos alternativas para iniciar el periodo trial:

a) Método fuera de linea. Utilizando el método MakeTrial() mediante el botón [Start Trial with MakeTrial()].

b) Método en linea. Utilizando el OLM básico con el botón [Start Trial with Basic OLM]. El demo está configurado para acceder al sitio www.av-soft.com que podrá utilizar para hacer las prácticas.

 

 

Iniciar el periodo trial

 

Item relacionado: Como iniciar el periodo trial

 

Aquí además de los botones para iniciar el periodo trial existen tres casillas de chequeo (checkboxes) para seleccionar los módulos que desea habilitar durante el periodo trial y un "combo box" donde seleccionar el número de registros que se permitirán.

Para probar seleccione Special 1 y Special 3 y 1000 registros. Haga click sobre el botón [Start with MakeTrial()] y verá el siguiente cuadro de mensaje informando el resultado de la operación, "Trial iniciado" :

 

demo01a06

 

Además podrá ver que el estado corriente de registración ha cambiado mostrando el mensaje que puede ver abajo:

 

demo01a07

 

Si ahora hace click sobre el botón [Continue >>] pasará al formulario principal de la aplicación donde verá el resultado de la operación realizada, (ahora sin pasar por la pantalla Wait):

 

demo05a04

 

Puede ver que se habilitaron los botones correspondientes a las casillas de chequeo seleccionadas y también se estableció en 1000 el numero máximo de registros permitidos.

 

Veamos ahora más detalles sobre como se hizo esto, en el formulari de registración ahora tenemos un botón más [Show Registration Data], con este botón accedemos a la siguiente pantalla:

 

demo05a06

 

El campo Values está compuesto por 3 nibbles, un nibble es la mitad de un byte y está compuesto por 4 bits haciendo un total de 3x4=12 bits para el campo Values. En la pantalla podemos verlo representado como un valor Hexadecimal '025', como binario 0000 0010 0101. Como vemos hemos utilizado los bits 0, 1 y 2 del nibble numero 3 (Value3) para controlar el acceso a los modulos especiales. El número de registros permitidos se guarda en el nibble numero 2.

 

Veamos un poco el codigo fuente utilizado para calcular el valor del campo Values en base a las casillas de chequeo seleccionadas:

 

function TRegForm.values:string;

var val: word;

begin

val:=0;

if ch1.Checked then val := 1;

if ch2.Checked then val := val + 2;

if ch3.Checked then val := val + 4;

result := inttohex(val,3);

end;

 

Sobre la variable val se calcula el valor que luego será asignado al campo Values.

 

Si  "Special 1" está chequeado se agrega 1 a val   1 = 0001 en binario

Si  "Special 2" está chequeado se agrega 2 a val   2 = 0010 en binario

Si  "Special 3" está chequeado se agrega 4 a val   4 = 0100 en binario

 

Al chequear las casillas "Special 1" y "Special 3" obtenemos (1 + 4) = 5

 

Visto en formato binario:

 

Special 1 =  0001

Special 3 =  0100

        -------

Suma      =  0101

 

Ahora veamos el código fuente del cálculo del número de registros permitidos:

 

function TForm1.maxrecords(n:integer):string;

begin

case n of

0: result:='50';

1: result:='200';

2: result:='1000'; //<---

3: result:='5000';

4: result:='20000';

5: result:='100000';

else result := 'Unlimited';

end;

end;

 

. . .

maxrec:=maxrecords(Values2Num(F.keydata.Values,2));

. . .

 

La función Values2Num() extrae del campo Values el nibble seleccionado y lo convierte a valor decimal.