|
Items
Metodos de aplicación general
Métodos de acceso a internet
Métodos y funciones utilitarias
METODOS DE APLICACION GENERAL
CalcUserId()
function CalcUserID(Uname:string):word;
Este metodo toma como parámetro un string que puede ser el nombre de usuario y retorna un número calculado en base a este parámetro. Al obtener el InstallCode con el método GetICode() se utiliza este método para calcular el codigo proveniente del nombre del usuario cuando la fuente User_Name está activada en la propiedad InstallCodeSources.
CheckKey()
function checkkey(i,v,a:word;ic,RKey:string):boolean;
Este metodo hace una verificación de una clave de registración pasada como parámetro (RKey). Llama intenamente al método DecodeRegKey() y si el codigo de error obtenido es cero retorna True en caso contrario retorna False.
DecodeRegKey()
function DecodeRegKey(i,v,a:word;ic,RKey:string;var app_id, icod_ver,begindate,days:word;
var idx,users, instances, keytype:byte; var values:string):integer;
Este metodo toma como parámetros de entrada los siguientes:
Los primeros cuatro parámetros (i,v,a,ic) tienen como finalidad verificar que la clave de registrtación pasada(RKey) sea válida. Esta validación se hace comparando cada uno de estos valores con los obtenidos de la clave RKey.
i : (word) número de la clave (index). (si es 9999 no se verifica)
v : (word) version, para claves genéricas. (si es 0 no se verifica)
a : (word) appid. (si es 0 no se verifica)
ic : (string) InstallCode. (si es '' no se verifica)
RKey : (string) Clave de registración.
Los parámetros de salida son los siguientes:
app_id : (word) propiedad AppID
icod_ver : (word) propiedad ICode (Version para claves genéricas)
begindate : (word) StartDate fecha de inicio del periodo autorizado
days : (word) Dias del priodo autorizado
idx : (byte) Index (0..254)
users : (byte) Numero de usuarios que comparten la clave a través del OLM.
Un registro para cada usuario, uno primario los restantes secundarios.
instances : (byte) Numero de instancias ejecutandose simultaneamente en el computador.
keytype : (byte) Tipo de Clave (0=Trial, 1=Temporal, 2=Permanente, 3=Unregister, 4=UnregisterAll)
values : (string) tres caracteres hexadecimales que permiten controlar opciones de la aplicación
Retorna un valor entero como resultado de la operación con el siguiente significado:
0: No hubo error
1: Longitud de clave erronea.
2: El Installcode no coincide
3: Error de validacion
4: El AppID no coincide
5: La Version no coincide
6: El módulo no coincide
DecodeAppData()
function DecodeAppData(appdata:string; var icsources:TInstallCodeSources;
var UsrNam,Comp,Eml,AppNam,AppVer,icsrc:string; var RanCod,OtherCod:word):boolean;
Este método toma como parámetro de entrada un string conteniendo la información de la aplicación obtenida desde los datos locales de registración. Verifica que los datos sean validos comparando la suma de chequeo y devolviendo sus campos en los siguientes parámetros de salida:
icsources: (TInstallCodeSources) propiedad InstallCodeSources
UsrNam : (string) Nombre del usuario
Comp : (string) Compañía del usuario
Eml : (string) Email del usuario
AppNam : (string) Nombre de la aplicación
AppVer : (string) Versión de la aplicación
icsrc : (string) Representacion string de la propiedad InstallCodeSources (Ej.'11000')
RanCod : (word) Propiedad RandomCode
OtherCod : (word) Propiedad OtherCode
Si los datos son validos retorna True, en caso contrario False.
DecodeIcode()
function decodeicode(icode:string; var cod_name, cod_cpu, cod_hd, cod_rand, cod_other,checksum:word):boolean;
Este método toma como parámetro de entrada, icode, un InstallCode de 27 caracteres de longitud con el formato: XXXXXX-XXXXXX-XXXXXX-XXXXXX y retorna sus campos componentes en sus parámetros de salida:
cod_name : (word)
cod_cpu : (word)
cod_hd : (word)
cod_rand : (word)
cod_other : (word)
checksum : (word)
Si el checsum calculado coincide con el leido retorna True, en caso contrario retorna False.
Para más información vea la propiedad InstallCode e InstallCodeSources.
EraseMod()
function EraseMod(Index:byte):boolean;
Este metodo elimina los datos locales de registración del módulo dado.
EraseReg()
function EraseReg:boolean;
Este metodo elimina todos los módulos y datos locales de registración de la aplicación.
GenRegKey()
function GenRegKey(Values, AICode:string; Abegindate:tdate; Adays,AAppID:word;
AUsers, AInstances, AIndex, AKeyKind:byte):string;
Este metodo retorna una clave de registración calculada en base a los parámetros pasados. No se utiliza directamente, es utilizado internamente por los métodos GenGenericKey() y GenRegularKey().
GenGenericKey()
function GenGenericKey(AiCode, Values:string; Abegindate:tdate; Adays,
AVersionID,AAppID:word; AUsers, AInstances, AIndex, keytype:byte):string;
Este metodo retorna una clave de registración genérica calculada en base a los parámetros pasados.
Values : (string) tres caracteres hexadecimales que permiten controlar opciones de la aplicación
AICode : (string) Codigo resumido (Checksum) del InstallCode.
Abegindate : (tdate) StartDate fecha de inicio del periodo autorizado
Adays : (word) Dias del priodo autorizado
AVersionID : (word) VersionID. Valor obtenido del numero de version
AAppID : (word) propiedad AppID
AUsers : (byte) Numero de usuarios que comparten la clave a través del OLM.
AInstances : (byte) Numero de instancias ejecutandose simultaneamente en el computador.
AIndex : (byte) Indice de la clave (0..254)
AKeyKind : (byte) Tipo de Clave (0=Trial, 1=Temporal, 2=Permanente, 3=Unregister, 4=UnregisterAll)
Este método solo es utilizado por las utilidades KeyGen y RegMonitor.
GenRegularKey()
function GenRegularKey(AIcode, Values:string; Abegindate:tdate; Adays,
AAppID:word; AUsers, AInstances, AIndex, keytype:byte):string;
Este metodo retorna una clave de registración calculada en base a los parámetros pasados.
AICode : (string) Codigo resumido (Checksum) del InstallCode.
Values : (string) tres caracteres hexadecimales que permiten controlar opciones de la aplicación
Abegindate : (tdate) StartDate fecha de inicio del periodo autorizado
Adays : (word) Dias del priodo autorizado
AAppID : (word) propiedad AppID
AUsers : (byte) Numero de usuarios que comparten la clave a través del OLM.
AInstances : (byte) Numero de instancias ejecutandose simultaneamente en el computador.
AIndex : (byte) Indice de la clave (0..254)
KeyType : (byte) Tipo de Clave (0=Trial, 1=Temporal, 2=Permanente, 3=Unregister, 4=UnregisterAll)
GetCategory()
function GetCategory(Index:word):string;
Este método accede al registro correspondiente en el OLM y retorna un caracter con el siguiente significado:
N: El registro no existe
P: El registro es primario
S: El registro es secundario
GetKeyType()
function GetKeytype(Key:string):byte;
Retorna el tipo de la clave clave pasada como parámetro.
(0=Trial, 1=Temporal, 2=Permanente, 3=Unregister, 4=UnregisterAll).
procedure GetICode(var icode, installcode:string);
GetICode()
procedure GetICode(var icode, installcode:string);
Este método obtiene el valor de la propiedad InstallCode desde las distintas fuentes del computador y otros, según lo establecido en la propiedad InstallCodeSources, retornando también el ICode (Suma de chequeo). Abajo puede ver una figura que esquematiza este proceso.

Vea también las propiedades ICode, InstallCode e InstallCodeSources.
GetKeyData()
function GetKeyData(Index:byte; var KeyData:TKeyData):boolean;
Este método obtiene los datos de registración para un indice de clave dado y retorna True si la operación fue exitosa.
Más arriba ya figura la definición del tipo TKeyData pero para su comodidad la repetimos a continuación.
TRegStatus = (Unregistered, Moved, Expired, Registered);
TKeyType = (Trial, Temporal, Permanent, Unregister, UnregisterAll);
TModuleData = record
Status : TRegStatus;
KeyType : TKeyType;
Startdate : TDate;
EndDate : TDate;
Days : word;
DaysLeft : word;
Users : byte;
Instances : byte;
Primary : boolean;
DateBacked : boolean;
TooManyInstances : boolean;
Values : string;
Key : string;
//For secondary registrations
ICodeP : string;
InstallCodep : string;
end;
Entendiendo estos campos
Status:
Unregistered : No existen datos de registración para el módulo dado
Expired : El periodo de registración terminó
Moved : El módulo se marcó para ser movido a otro computador.
No se debería permitir la ejecución de la aplicación.
Registered : La registración está activa.
KeyType:
Trial : El módulo está registrado como Trial. La registración fue hecha con
una clave de tipo trial pensada para usarse en periodos de evaluación.
Temporal : El módulo está registrado como temporal. La registración fue hecha con
una clave de tipo temporal pensado para rentar (alquilar) el soft.
Permanent : El módulo está registrado como permanente. La registración fue hecha con
una clave de tipo permanent pensada para una registración definitiva.
Unregister : La clave al ser registrada eliminará el módulo correspondiente.
UnregisterAll : La clave al ser registrada eliminará todos los módulos y demás datos de registración.
StartDate : Es la fecha de inicio del periodo autorizado. Solo válido si
KeyType es trial o temporal. Para claves permanentes se hace igual a 65535.
EndDate : Es la fecha de finalización del periodo autorizado. Solo válido si KeyType
es trial o temporal. Para claves permanentes se hace igual 65535 (MaxWord).
Days : Número de días autorizados. Solo válido si KeyType es trial o temporal.
Para claves permanentes se hace igual 65535 (MaxWord).
Users : Número de usuarios que pueden registrarse a través del OLM,
uno primario y el resto secundarios.
Instances : Máximo número de instancias del programa ejecutandose simultamente.
Primary : True si se trata de una registración primaria.
DateBacked : Se ha retrocedido la fecha del sistema. Si lo desea puede tomar
acciones similares a las usadas para el estado expirado.
TooManyInstances: El límite Instances ha sido alcanzado.
Values : Valor string de tres caracteres hexadecimales obtenido desde la clave de
registración que puede ser utilizado de diversas maneras, por ejemplo
para activar/desactivar hasta 12 opciones en su programa.
Key : La clave de registración que corresponde al módulo.
ICodeP : El Checksum del InstallCode Primario (Solo para registraciones secundarias)
InstllCodeP : El InstallCode Primario (Solo para registraciones secundarias)
En la versión 3.0 se desdobló el tipo TRegStatus en TKeyType y TRegStatus. No todas las combinaciones son validas, abajo puede ver una tabla sobre las combinaciones posibles:
TKeyType TRegStatus Meanings
Trial Unregistered N/A (Unregistered mean the lack of registration)
Trial Moved Registration marked to be moved to another computer
(not functional) not usual for Trial Keys
Trial Expired Trial period expired
Trial Registered The key is saved and functional
Temporal Unregistered N/A (Unregistered mean the lack of registration)
Temporal Moved Registration marked to be moved to another computer
(not functional)
Temporal Expired Temporal period expired
Temporal Registered The key is saved and functional
Permanent Unregistered N/A (Unregistered mean the lack of registration)
Permanant Moved Registration marked to be moved to another computer
(not functional)
Permanent Expired N/A (permanent do not expire)
Permanent Registered The key is saved and functional
Unregister N/A The key is intended to delete the registered key for the given index.
UnregisterAll N/A The key is intended to delete all registered keys for all indexes.
GetKeyType()
function GetKeytype(Key:string):byte;
Retorna el tipo de la clave pasada como parámetro, a saber:
0=trial, 1=temporal, 2=permanent, 3=unregister, 4=unregisterall
GetOnlineDate()
function GetOnlineDate:tdatetime;
Obtiene a través de internet la fecha y hora actual.
HostFound()
function HostFound(const HostName: string):boolean;
Retorna True si es posible acceder al host pasado como parámetro. Por ejemplo:
Ok := HostFound('www.av-soft.com');
IcodeSources2Str()
function IcodeSources2Str:string;
Este método formatea la propiedad InstallCodeSources como un string de 8 caracteres de longitud. Por ejemplo la propiedad installcodesources con el valor [CPU_ID, HD_SN] es representado como '11000'. Es utilizado internamente para guardar esta propiedad junto a los datos de registración. Es utilizado internamente por los métodos Start() y WriteAppData().
IsLocal()
Function IsLocal:boolean;
Retorna True si el programa se está ejecutando en forma local y False si se ejecuta desde una ubicación remota en un entorno de red.
MakeTrial()
function MakeTrial(index,instances:byte; startdate:tdate; days:word):integer;
Este metodo genera y registra una clave de tipo trial de acuerdo a los parámetros dados.
index = indice de la clave.
instances = max instancias ejecutandose simultaneamente.
startdate = fecha de inicio del periodo de prueba.
days = periodo de prueba expresado en días.
ReadAppData()
function ReadAppData(update:boolean;var icode, instcode:string):boolean;
Este método Lee desde los datos locales de registración los datos propios de la aplicación. Para más información vea el apartado Datos Localdes de Registración en el tópico "Claves de registración".
Los datos leidos serán totalmente o en parte aplicados a las propiedades del componente dependiendo del parámetro pasado. Por ejemplo si se utiliza ReadAppData(True,..); todos los datos leidos serán aplicados a las propiedades y en caso contrario solo se aplicarán los siguientes: UserName, Company y Email. Internamente el componente utiliza esta función pero siempre en la modalidad ReadAppData(False) ya que si usaramos True estaríamos sobreescribiendo los mismos valores. Solo en el codigo fuente de la utilidad RegMonitor utilizamos True para actualizar todas las propiedades del componente.
ReadLastDate()
procedure ReadLastDate;
Este método lee desde los datos de registración del computador una fecha guardada con anterioridad la última vez que se ejecutó el programa. Si esta fecha es posterior a la fecha actual (con un margen de error de un día para evitar problemas con el huso horario) se hace la propiedad DateBAcked = True. También se lee otro valor que se asigna a la propiedad DateWarning que puede ser 'Y' o 'N', que con anterioridad se asigno con 'Y' si la fecha se avanzó o atrasó más de dos días, esto permite detectar si la fecha se está manipulando tal vez con intenciones de utilizar el programa en forma ilegal. Si el valor leido es 'Y' se hace DateWarning = True. Después podemos testear estas propiedades para ver si es necesario ejecutar el método OnlineCheckDate() para ver si la fecha del sistema es aceptable comparada con la obtenida de internet y si es correcta reestablecer a False las propiedades DateBacked y DateWarning. Vea el ejemplo en Demo1 y la descripción del método OnlineCheckDate().
ReadKeyData()
function ReadKeyData(Index:byte):string;
Lee desde los datos de registración locales de la clave cuyo indice es pasado en el parámetro "Index". Desencripta los datos y retorna un string de 87 caracteres de longitud compuesto por la concatenación de 5 campos a saber:
[Registration Key(31)]+[Moved(1)]+[Primary(1)]+[Primary InstallCode(27)]+[LocalInstallCode(27)]
Este método es utilizado internamente por los métodos GetKeyData(), OnlineRestorePrimary() y OnlineRestoreSecondary(). Vea más información en el apartado Datos locales de registración en el tópico "Claves de registración"
RegisterKey()
function RegisterKey(Key:String):integer;
Este método registra una clave utilizando la clave (key) pasada como parámetro. Guarda esta clave junto con otros datos concatenados como se explicó en la sección previa ReadKeyData(). Vea más información en el tópico Claves de Registración.
ReStart()
procedure ReStart;
Este método vuelve a ejecutar el método Start(). Esto puede ser necesario cuando se quiere que las propiedades calculen sus valores nuevamente, por ejemplo al haber cambiado el nombre de usuario y compañía. (Ver ejemplo 8).
Str2IcodeSources()
function Str2IcodeSources(s:string; var icsources:TInstallCodeSources):boolean;
Este método es la contraparte del método ICodeSources2Str(). Toma como parámetro de entrada un string de 5 caracteres de longitud (Ej. '11000') que representa las fuentes activas en la propiedad InstallCodeSources y devuelve el parámetro icsources calculado en base a este string. Retorna True si la operación fue exitosa. Es usado internamente por el método DecodeAppData()
Start()
procedure Start;
Este método se ejecuta una sola vez al iniciarse la ejecución de la aplicación y es el encargado de establecer el valor de las propiedades que toman sus valores en tiempo de ejecución como ser el InstallCode, Icode, DateBacked, UserName, Company, Email, etc.
UserNameFromWindows()
Function UserNameFromWindows: string;
Obtiene y retorna el nombre de usuario registrado en Windows.
WriteAppData()
procedure WriteAppData;
Guarda los datos de registración comunes a toda la aplicación en un fichero de datos en el disco local. Para mayor información vea el apartado Los Datos Locales de Registración en el tópico Claves de Registración.
WriteModule()
function WriteModule(RKey:string):boolean;
Guarda los datos de un módulo en los datos de registración en el disco local. No debe ser utilizado directamente en su aplicación. Es utilizado internamente por todos los métodos que guardan una clave de registración para un módulo en los datos de registración como ser: RegisterKey(), OnLineSynch(), OnlineStartTrial(), OnlineExtendTrial(), OnlineRegisterKey, etc.
WriteLastDate()
procedure WriteLastDate;
Si la fecha actual del sistema es mayor al valor de la propiedad LastDate esta se actualiza haciéndose igual a la fecha del sistema y su valor se guarda con los datos de registración. De esta forma LastDate contendrá la fecha más avanzada con la que se haya ejecutado la aplicación. Este valor se guarda para evitar que el usuario atrase la fecha del sistema con la intención de reutilizar un periodo ya vencido. Vea la propiedad DateBacked.
METODOS DE ACCESO A INTERNET
Connected()
function Connected:boolean;
Retorna True si está disponible una conexión a internet.
OnlineCheckDate()
function OnlineCheckDate(fix:boolean):boolean;
Este método verifica la fecha del computador comparándola con la obtenida desde internet. Si (fix=true) también sincroniza la fecha y hora del computador con la obtenida de internet. También guarda la fecha en el campo Lastdate en los datos locales de registración. Ver ejemplos 1 al 7.
OnlineFullSynch()
function OnlineFullSynch(Index:word):string;
Esta función copia los datos de registración desde la base de datos del OLM a los datos de registracion en el computador. Como parámetro se pasa el número de Indice. También, si no existe el registro en el OLM lo inicializa con una clave trial utilizando como parámetros los valores por defecto, también si en el registro (Paid=Y) realiza la misma función que OnlineRenew() y si (Extend=Y) realiza la misma función que OnlineExtendTrial(). Se recomienda utilizar el método Synchronize() agregado en la versión 4. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa.
OnlineRequest()
function OnlineRequest(target, postdata,enkey2:ansistring):ansistring;
Esta función no se utiliza directamente. Es utilizada por el componente en todas las funciones que acceden al OLM.
OnlineRegisterKey()
function OnlineRegisterKey(Key:String):string;
Esta función registra una aplicación con la clave de registración pasada como parámetro. Toma como parámetro la clave de registración que queremos registrar. La clave y demás datos de registración se guardan en la computadora local y también en la base de datos de la página web en el OLM.

Retorna un string con el codigo resultado de la operación. Para mayor información vea el ejemplo 7.
OnlineStartTrial()
function OnlineStartTrial(Index,users,instances:byte; days:word; values:string):string;
Esta función inicia el periodo de evaluación para el Indice que se pasa como parámetro. Toma como parámetros:
Index: Indice de la clave (0..254);
users: número de usuarios autorizados
instances: número de instancias autorizadas
days: periodo trial en días
values: campo values

Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea los ejemplos 6 y 7.
OnlineExtendTrial()
function OnlineExtendTrial(Index,users,instances:byte; days:word; values:string):string;
Esta función extiende el periodo de evaluación para el indice que se pasa como parámetro. Toma como parámetros los mismos ya vistos arriba en OnlineStartTrial(), Solo tiene efecto si en el registro del OLM (Extend = 'Y').
OnlineGetKeyB()
function OnlineGetKeyB(values:string; kind, Index, days, inst:word):string;
Esta función inicia el periodo de evaluación para el indice que se pasa como parámetro utilizando el conjunto básico de scripts (OLM básico). Su funcionalidad es muy parecida al de los métodos OnlineStartTrial() y OnlineExtendTrial() con la diferencia de que aquí no se incluye el numero de usuarios ya que el manejo de usuarios solo puede hacerse con el OLM avanzado. Para más detalles vea los ejemplos 1 al 5.
OnlineGetKeyA()
function OnlineGetKeyA(values:string; kind, Index, days, startdate, usrs, inst:word):string;
Esta función genera una clave de registración igual que con OnlineGetKeyB() pero utilizando el OLM avanzado. Genera claves de registración en base a los parámetros pasados pero no modifica ni crea registros de la base de datos del OLM ni guarda datos en el computador local. No la utilizamos en los ejemplos Demo. Está disponible para que Ud. la utilice según su criterio, tal vez para implementar una alternativa a la utilidad KeyGen.
OnlineMovePrimary1()
function OnlineMovePrimary1(Index:word):string;
Esta función se utiliza para marcar una registración primaria para ser movida a otro computador. Accede a todos los registros de la base de datos del OLM para el índice pasado como parámetro que tengan el installcode primario coincidente con el obtenido del computador. Esto hará que se desactive la registración primaria en ese computador y también las registraciones secundarias en los computadores que comparten la misma licencia, asignando Moved=Y a todos estos registros. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineMovePrimary2()
function OnlineMovePrimary2(OldIcode:string; Index:word):string;
Esta función realiza el segundo paso en el proceso de trasladar una licencia primaria de un computador a otro. Esta función necesita que se pase como parámetro el InstallCode proveniente del viejo computador además del número de indice. Accede al OLM utilizando el script 'advancedolm.php' y genera una nueva clave basada en el Installcode del nuevo computador y utilizando los mismos valores existentes para los otros parámetros (users, instances, startdate, days, kind y values). Guarda esta nueva clave e InstallCode en el registro correspondiente a este computador primario y modifica los registros secundarios con el nuevo Installcode primario y pone Moved=N en todos los registros implicados. Finalmente Guarda los datos de registración en el computador corriente. Si Ud. implementa la opción de mover la registración para su aplicación y además permite más de un usuario por licencia (users > 1), también podría ejecutar la función OnlineSynch() o Synchronize() en los computadores secundarios para actualizar los datos de registración locales cuando se haya movido la licencia. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineMoveSecondary1()
function OnlineMoveSecondary1(Index:word):string;
Esta función se utiliza para marcar una registración secundaria para ser movida a otro computador. Accede al registro de la base de datos del OLM para el indice pasado como parámetro que tenga el installcode coincidente con el obtenido del computador y asigna Moved=Y. El registro debe ser de tipo secundario. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineMoveSecondary2()
function OnlineMoveSecondary2(OldIcode:string; Index:word):string;
Esta función realiza el segundo paso en el proceso de trasladar una licencia secundaria de un computador a otro. Esta función necesita que se pase como parámetro el InstallCode proveniente del viejo computador además del número de indice. Accede al registro correspondiente al viejo InstallCode y lo cambia por el nuevo proveniente del nuevo computador, finalmente asigna Moved=N para activar la licencia. Retorna un string con el código resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineRestorePrimary()
function OnlineRestorePrimary(Index:word):string;
Esta función reestablece una registracion primaria a su estado original después de haber ejecutado la función OnlineMovePrimary1(). Desde el computador movido accede a todos los registros del OLM cuyo InstallCode Primario coincida con el del computador y asigna Moved=N a todos estos registros. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineRestoreSecondary()
function OnlineRestoreSecondary(Index:word):string;
Esta función reestablece una registracion secundaria a su estado original después de haber ejecutado la función OnlineMoveSecondary1(). Desde el computador movido accede al registro del OLM cuyo InstallCode coincide con el del computador y asigna Moved=N a este registro. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineRenew()
function OnlineRenew(Index:word):string;
Esta función utiliza el OLM para generar una nueva clave de registración en base a los campos del registro del OLM y la guarda en el mismo registro y la retorna a la aplicación donde es guardada junto a los datos de registración locales. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Se recomienda utilizar la función Synchronize() agregada en la versión 4, vea el ejemplo 7.
OnlineSynch()
function OnlineSynch(Index:word):string;
Esta función copia los datos de registración desde la base de datos del OLM a los datos de registracion en el computador. Como parámetro se pasa el número de Indice. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Se recomienda utilizar la función Synchronize() agregada en la versión 4 que realiza una operación de sincronización más completa.
OnlineStartSecondary()
function OnLineStartSecondary(icodep:string; Index:word):string;
Esta función crea una registración secundaria para el indice pasado como parámetro. También debe pasarse el InstallCode desde el computador donde se realizó la registración primaria (icodep). La cantidad de registros secundarios que se pueden asociar a una registración primaria depende del valor del campo users incluido dentro de la clave de registración y guardado también como uno de los camos del registro en el OLM. Por ejemplo si users=4 solo podrán haber 3 registraciones secundarias completando así con la primaria el total de 4 permitidas. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea el ejemplo 7.
OnlineRemoveReg()
function OnlineRemoveReg(Index:word):string;
Esta función elimina la registración existente del indice pasado como parámetro, sea primaria o secundaria, tanto de la base de datos del OLM como de los datos locales de registración. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea ejemplos 6 y 7.
OnlineRemoveKey()
function OnlineRemoveKey(Index:word):string;
Esta función es la versión del OLM básico de OnlineRemoveReg(). Elimina la registración existente del indice pasado como parámetro, elimina el fichero asociado en el OLM y los los datos locales de registración. Retorna un string con el codigo resultado de la operación, '00' si fue exitosa. Vea ejemplos 1 al 5.
OnlineGetRegData()
function OnlineGetRegData(Index:word):string;
Este método lee el registro correspondiente desde la base de datos en el OLM del sitio web y retorna un string con los valores de todos los campos del registro. Los valores están separados por el caracter '|' en el siguiente orden: (username |company |email |exten |paid1 |lastkey |days |keydate |move |instances |users |icsum |icodep |primar |vals |kind |startdate).
Esta función fue creada para ser utilizada en el RegMonitor para poder realizar allí las mismas funciones que se hacen desde el panel de control.
OnlineSaveUserData()
function OnlineSaveUserData(name,company,email:String; Index:word):string;
Este método toma los datos pasados como parámetros, name, company y email y los guarda con los datos locales de la aplicación y en el OLM.
Synchronize()
function Synchronize(Index:word; verbose;boolean):string;
Esta función sincroniza los datos de registración entre el OLM y el computador. Se envian al OLM los datos locales de registración y allí se comparan con los existentes y se evaluan para determinar cual de ambos son más relevantes, entonces, si los datos locales son más relevantes se hace una sincronización (Local -> OLM) en caso contrario se hace una sincronización (OLM -> Local). También, según sea necesario realiza las mismas funciones que OnlineRenew() y OnlineExtendTrial(). Los parámetros pasados son los siguientes:
Index: Determina las claves que serán sincronizadas. Por ejemplo si (index=2) se sincronizarán las claves que correspondan a los indices 0, 1 y 2.
Verbose: Si es False retorna un string con los códigos resultados de la operación (uno para cada clave) Ej. ('200|366|000'). Cada codigo tiene tres digitos.
El primero indica el tipo de operación que se ha intentado realizar en el OLM a saber:
0: No se realizó ninguna operación,
2: Operación equivalente a OnlineRenew(). Se renueva la clave por ser (Paid=Y).
3: Sincronización de licencia primaria (Local -> OLM)
4: Sincronización de licencia primaria (OLM -> Local)
5: Sincronización de licencia secundaria (OLM -> Local)
Los dos digitos restantes, 2 y 3 representan el resultado de la operación, ('00'..'11') para los devueltos por operaciones en el computador local y ('50'..'72') los ocurridos en el OLM. Vea la función Error2Str() más abajo.
METODOS Y FUNCIONES UTILITARIAS
Esos son algunos métodos y funciones útiles agregados en esta versión a fin de facilitar algunas tareas comunes al tratar con mensajes de error, el campo Values, la fecha del sistema y otros.
FixSystemDate()
procedure fixsystemdate(dat:tdatetime);
Toma como parámetro una fecha que es utilizada para modificar la fecha del computador.
Metodos para utilizar con el campo Values:
Estos dos métodos permiten analizar el campo Values. este campo tiene tres nibbles 1.5 byte (e.g. '000', 'ABF', etc). Este campo puede ser utilizado para controlar varias cosas dentro de su aplicación. Por ejemplo puede utilizar un nibble expresado como represaentación binaria (cuatro valores 1/0 Verdadero/Falso) para habilitar/inhabilitar hasta cuatro funcionalidades dentro de su aplicación. El método IsValueOn() retorna uno de estos cuatro valores Verdadero/Falso. También puede utilizar otro nibble convertido en valor entero (0..15), o los tres nibbles juntos como un valor entero (0..4095) a fin de controlar otro tipo de características como ser el nivel de acceso a una base de datos (rango de registros permitidos por ejemplo). Vea el método Values2Num() utilizado en el Demo 1.
IsValueOn()
function IsValueOn(Values:string; nibble, digit:byte):boolean;
Toma tres parámetros; el campo Values, el número de nibble (1..3) y el número de dígito binario (0..3). Retorna True o False según el valor que tenga el bit implicado dentro del campo Values.
Values2Num()
function Values2Num(Values:string; nibble:byte):integer;
Toma dos parámetros; el campo Values y el nibble seleccionado. Si nibble es 0 retorna los tres nibbles como un único número.
En la imagen de abajo puede ver algunos ejemplos utilizando estos dos métodos.

Metodos para preparar mensajes de error y de estado:
Los siguientes dos métodos permiten convertir en mensajes los estados de registración y generar mensajes de error. El código fuente está incluido para permitirle crear sus propias funciones personalizadas.
Status2Str()
function Status2Str(KeyData:TKeyData):string;
Retorna un string con un mensaje sobre el estado de registración del registro de datos de registración pasado como parámetro. Abajo tiene el código fuente:
function TAVLockS4.Status2Str(KeyData:TKeyData):string;
var s:string;
begin
s:='';
if KeyData.DateBacked then s:='Bad system date'
else
case KeyData.KeyType of
Trial: s:=s+'Trial';
Temporal: s:=s+'Temporary';
Permanent: s:=s+'Registered';
end;
case KeyData.Status of
Unregistered: s:='Unregistered';
Expired: s:=s+'-Expired';
Moved: s:=s+'-Moved';
Registered:
if (KeyData.KeyType in[Trial,Temporal])
then s:=s+', '+inttostr(KeyData.DaysLeft)+' days left';
end;
result:=s;
end;
Error2Str()
function Error2Str(err:string):string;
Retorna un string con un mensaje de error para el parametro err dado que debe ser un string de dos digitos numéricos (Ej. '01', '02', etc). Cuando el valor está entre '00' y '11' este proviene del método dentro del componente (Ej. OnlineStartTrial(), OnlineRenew(), etc), pero cuando el valor esta entre '50' y '72' es una respuesta que proviene del OLM. Abajo puede ver el código fuente.
function Error2Str(err:string):string;
var n,l:integer;
ok:boolean;
s,res:string;
begin
result:=''; s:='';
l:=length(err);
ok:= (l in[2,3]) and isdigit(err);
if ok then begin
if (l=3) then begin
res:='('+err[1]+') ';
err:=copy(err,2,2);
end;
end;
if not ok and (copy(err,1,2)='99') then begin
result := copy(err,3,255);
exit;
end;
if ok then n:=strtoint(err);
if (n in[0,50]) then exit;
if (n in [1..10]) then result:='Error: '
else if (n in [51..73]) then result:= result+'OLM ERROR: ';
case n of
1 : s:='Could not write key data';
2 : s:='Bad response from OLM request';
3 : s:='Unregistered';
4 : s:='Invalid Registration Key';
5 : s:='Local Data not Primary or Moved';
6 : s:='Local Data not Primary or not Moved';
7 : s:='Local Data Primary or Moved';
8 : s:='Local Data Primary or not Moved';
9 : s:='Local Data is Primary';
10 : s:='Local Data is Secondary';
11 : s:='Could not delete local key data';
51 : s:='VALUES_POSTED_COUNT_MISMATCH';
52 : s:='NO_DATA_POSTE';
53 : s:='ICODE_LENGTH_MISMATCH';
54 : s:='ICSUM_LENGTH_MISMATCH';
55 : s:='SECONDARY_LINKED_TO_SECONDARY';
56 : s:='PRIMARY_NOT_EXISTS';
57 : s:='KEY_LENGTH_MISMATCH';
58 : s:='COULD_NOT_UPDATE_RECORDS';
59 : s:='COULD_NOT_CONNECT_TO_DATABASE';
60 : s:='NOT_EXTENSION_ALLOWED';
61 : s:='NOT_MORE_USERS_ALLOWED';
62 : s:='COULD_NOT_CONNECT_TO_DATABASE';
63 : s:='NOT_PAID';
64 : s:='COULD_NOT_DELETE_RECORDS';
65 : s:='RECORD_ALREADY_EXISTS';
66 : s:='RECORD_NOT_EXISTS';
67 : s:='RECORD_NOT_SAVED';
68 : s:='RECORD_IS_NOT_PRIMARY';
69 : s:='RECORD_IS_NOT_SECONDARY';
70 : s:='RECORD_IS_NOT_MOVED';
71 : s:='RECORD_IS_MOVED';
72 : s:='COUNT_OF_RECORDS_IS_ZERO';
73 : s:='UNKNOWN_OLM_ERROR';
else s:='Unknown error';
end;
result:=result+s;
end;
ErrorMessages()
function ErrorMessages(arr:TArrStr):string;
Es utilizado internamente por el método Synchronize() cuando se hace (verbose=True) para devolver los mensajes de resultado de la operación. Para cada codigo recibido se aplica la función Error2Str() y se concatena su resultado al resultado de esta función.
function ErrorMessages(arr:TArrStr):string;
var i,n:integer;
s:string;
begin
result:='';
n:=High(Arr);
for i:=0 to n do begin
s:=Error2Str(Arr[i]);
if (s<>'') then result:=result+inttostr(i)+': '+s+#13#10;
end;
end;
He tratado de que esta ayuda sea lo más clara y completa posible, sin embargo es posible que hayan quedado aspectos sin considerar. Si Ud. nota que falta algo o ha encontrado errores o tiene alguna idea que podría ser útil para mejorar esta ayuda, por favor hágamelo saber.
|
Alcides Valega
Autor de AVLock SIMPLE
|
|