|
Items
En este ejemplo aprenderá a
Esquemas de protección
Diagrama de flujo
Breve práctica con el ejemplo 2a
En este ejemplo aprenderá a:
1. Utilizar el componente AVLock SIMPLE en un esquema básico de protección (esquema B).
Esquemas de protección
Este ejemplo utiliza el esquema B
Esquema B

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

|
procedure TForm1.FormCreate(Sender: TObject);
begin
DoRegister(False);
end;
procedure TForm1.DoRegister(force:boolean);
var F : TRegForm;
begin
F:=TRegForm.Create(nil); //Create the registration Form
try
if AVLockS51.IsLocal and (force or (keydata.DaysLeft < 15)) then F.ShowModal;
finally
FreeAndNil(F);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
special;
end;
procedure TForm1.special;
var F:TForm2;
begin
if (keydata.Status = Registered) then begin
F:=TForm2.Create(nil);
try
F.showmodal;
finally
freeandnil(F);
end;
end else showmessage('Special Features not allowed. Only available for registered users.');
end;
|
procedure TForm1.FormPaint(Sender: TObject);
begin
{ //commented in order to go ahead still at not registered status
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 AVLockS51.IsLocal and (AVLockS51.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, con los siguientes cambios:
1) Se ha eliminado del manejador del evento OnPaint la sección que terminaba la aplicación cuando no estaba registrado o el periodo autorizado había expirado y se agregó el procedimiento "special" que es ejecutado desde el botón "Button1" [Special Features].
2) También en GetRegStatus() se cambiaron las fuentes utilizadas para calcular el InstallCode, usando aquí el siguiente esquema:
InstallCodeSources := Machine_Data;
MachineSources := [System_UUID, HD_SN];
3) Además este ejemplo se configuró con el OLM Básico:
{$DEFINE BASIC_OLM} //Options are BASIC_OLM, ADVANCED_OLM, NO_OLM
Lo que se explicó sobre el parámetro "force" en el ejemplo 1 también tiene validez en este ejemplo.
La versión (2a) 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 (2b) 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 2a
Desde el IDE de Delphi Abra el ejemplo 2a (\Examples\2\a)

Si lo cree necesario puede seguir los pasos del ejemplo anterior: ejecutar la aplicación, iniciar el periodo trial, borrar la registración, etc.
|