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 3

Top  Previous  Next

EJEMPLO 3

 

Items

En este ejemplo aprenderá a

Esquemas de protección

Diagrama de flujo

Breve práctica con el ejemplo 3a

Iniciar el periodo trial

Ejemplo 3b

 

En este ejemplo aprenderá a:

1. Utilizar el componente AVLock SIMPLE en un esquema de protección con múltiples módulos (esquema C).

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

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

 

 

Esquemas de protección

Este ejemplo utiliza el esquema C

 

  Esquema C

layout04

 

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

 

 

 

Diagrama de flujo

 

demo03a01

procedure TForm1.FormCreate(Sender: TObject);

begin

DoRegister(False);

end;

 

procedure TForm1.DoRegister(force:boolean);

var F : TRegForm;

  ok:boolean;

begin

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

try

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

finally

  FreeAndNil(F);

end;

if (keydata.Status = Registered) then begin

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

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

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

end else begin

  Button1.Enabled := False;

  Button2.Enabled := False;

  Button3.Enabled := False;

end;

end;

 

procedure TForm1.FormPaint(Sender: TObject);

begin

if (keydata.Status <> Registered) then begin

  showmessage('Not Registered');

  application.Terminate;

end;

if (keydata.TooManyInstances) then begin

  showmessage('Too many instances');

  application.Terminate;

end;

if not AVLockS41.IsLocal and (AVLockS41.activeinstances.count < 2) then begin

  showmessage('This application must be run first from the server.');

  application.Terminate;

end;

end;

 

 

 

El esquema es muy parecido al ejemplo 1 pero ahora se controlan tres módulos especiales con el campo Values.

 

Lo que se explicó sobre el parámetro "force" en el ejemplo 1 también tiene validez en este ejemplo.

 

La versión (3a) 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 (3b) 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 3a

 

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

 

demo03a02

 

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:

 

demo03a03

 

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.

 

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.

 

Si estando en estado no registrado se hace click sobre el botón [Continue >>] la aplicación terminará de ejecutarse y no podrá acceder al formulario principal "MAIN FORM".

 

 

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.

Para probar seleccione Special 1 y Special 3 y haga click sobre el botón [Start with MakeTrial()]. 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:

 

demo03a04

 

Puede ver que se habilitaron los botones correspondientes a las casillas de chequeo seleccionadas.  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:

 

demo03a05

 

Aquí podemos ver información detallada sobre el estado de registración pero lo que vamos a observar en detalle ahora es lo relativo al campo Values. Este 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 '005', como binario 0000 0000 0101. Como vemos hemos utilizado los bits 0, 1 y 2 del nibble numero 3 (Value3) para controlar el acceso a los modulos especiales. 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 2 =  0100

        -------

Suma      =  0101

 

Ejemplo 3b

 

Aquí se retiraron todas las utilidades del formulario de registración y el inicio del periodo trial se efectua desde el evento OnCreate del form principal utilizando el procedimiento StartTrial cuyo codigo fuente puede verse abajo:

 

procedure TRegForm.StartTrial;

begin

if (keydata.Status = Unregistered) then begin

  {$IFDEF NO_OLM}

              //(index,users,inst,startdate,days,values)

   AVLock.MakeTrial(0,1,2,date,30,'007');

  {$ENDIF}

  {$IFDEF BASIC_OLM}

              //values, kind, Index, days, inst)

   AVLock.OnlineGetKeyB('007',0,0,30,1);

  {$ENDIF}

  {$IFDEF ADVANCED_OLM}

              //(index,users,inst,days,values)

   AVLock.OnlineStartTrial(0,1,1,30,'007');

{$ENDIF}

 

  GetRegStatus;

end;

end;

 

Se utilizó '007' para el campo Values. El nibble 3 que utilizamos es igual a 7, en binario 0111, habilitando de este modo los tres modulos especiales durante el periodo trial. Si durante las prácticas inició el periodo trial con el OLM básico utilizando un valo distinto para Values no podrá cambiarlo a menos que elimine el registro en el servidor como se mostró en el ejemplo 1.