Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2006
luxus luxus is offline
Miembro
 
Registrado: oct 2004
Posts: 134
Poder: 20
luxus Va por buen camino
Aplicacion con nº de serie

Hola a todos,
estoy terminando de diseñar una aplicación y me gustaría que el programa le pidiese al usuario un numero de serie para poder ejecutar el programa(solamente cuando se haya nstalado por primera vez). ¿Como puedo implementar esto?
Gracias y saludos
Responder Con Cita
  #2  
Antiguo 07-08-2006
Avatar de Pascalizado
Pascalizado Pascalizado is offline
Miembro
 
Registrado: abr 2006
Ubicación: Buenos Aires, Argentina
Posts: 163
Poder: 19
Pascalizado Va por buen camino
Puedes ver un componente de lazarus que se ocupa de eso, por supuesto que es opensource y prodras adaptarlo a delphi, la web de lazarus es http://lazarus.freepascal.org ahi podras encontrar el componente

saludos
__________________
Pascalizado
-----------------------------
"Ser una pluma y por el viento dejarse llevar hasta donde nunca nadie pudo llegar..."
Responder Con Cita
  #3  
Antiguo 07-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.108
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. El tema es muy amplio. Existen no pocos componentes que tratan de echar una mano. Yo alguna vez utilizé uno en concreto que viene con la Jedi Library. Se llama (si no ha cambiado) "TJvSerialMaker".

El funcionamiento era relativamente sencillo. Con dicho componente podías programar un "generador de números de serie", en base a dos cosas, fundamentalmente: el nombre y apellidos del usuario (por poner un caso, podría ser su correo, su nombre sólo, qué sé yo) y un número "base".

Entonces tú podías generar números de serie con dicho programa "generador de números de serie". Luego, en el programa en que pensabas utilizar dichos números de serie, tenías que utilizar el mismo componente "TJvSerialMaker".

El usuario podía "registrar" la aplicación introduciendo su nombre y el número de serie generado con el programa que he dicho antes. Es decir, se suponía que el usuario te hacía llegar un "pedido". Tú aceptabas el pedido, solicitabas el nombre y apellido del usuario, generabas un número de serie en base a esos datos (y el número base, al que luego me referiré) y le mandabas al usuario su número de serie.

¿Qué se hacía en la aplicación para comprobar la valided del número de serie? El propio componente "TJvSerialMaker", como he dicho, se encargaba de ello. En la aplicación, para empezar, se utilizaba el mismo número base con el que se habían generado los números de serie. Con ese número base y el nombre y apellidos del usuario,... el asunto estaba hecho.

O sea, el número de serie que tú le pasabas al usuario (generado por ti mismo) tenía al cabo que coincidir con el que el que se generaba en la aplicación "cliente". En ambos casos se utilizaban los mismos datos, o sea, que la cosa no podía fallar, a no ser que el usuario no indicara bien su nombre, o no proporcionara un número de serie correcto, claro está.

Me he liado demasiado, creo,... pero, por mucho que parezca un embrollo, es todo lo contrario: una forma más o menos sencilla de implementar algo como lo que precisas, puesto que, como he dicho al comienzo, hay no pocos componentes bastante más complejos y si se quiere también más completos.

PD. Creo recordar que se incluye un ejemplo de uso del componente entre los ejemplos que vienen en la Jedi Library.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 07-08-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Se puede hacer de diferentes formas usando:

1 - Un archivo
2 - Un campo en la Base de datos
3 - El Registro de Windows

La idea es:

1 - Si no existe el archivo, que pida al usuario la serie. Una vez validado crear el archivo.

2 - Un campo llamado "Inicidado" qeu indique las veces que entran al sistema. Si éste dice 0 es porque es la 1ra vez.

3 - Lo mismo que el archivo, si no existe el key en el registro que pida la serie

Aunque los metodos anteriores no son infalibles.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 07-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Aunque poco mas se puede decir que lo que ya te dijeron, voy a poner un poco de código a la teoría.

Aquí te dejo tres funciones, la primera comprueba si el programa esta registrado, devolviendo TRUE si lo esta, colocala en las partes de tu programa en la que necesites comprobar si el programa esta registrado (al iniciar, al guardar, etc). La siguiente registra el programa pasándole como parámetro el código de registro, y la tercera genera el código de registro, esta evidentemente no la incluirás dentro de tu programa sino en un programa aparte que utilizaras para generar los códigos cuando el cliente pague.

El parámetro Ident que aparece en las tres funciones tiene los siguientes usos. Si es un valor constante todos tus programas tendrán el mismo código de registro, pero puede ser el nombre del usuario o el numero de serie del disco duro, por ejemplo. En el primer caso para cada usuario se generaría un código diferente y en el segundo habría que generar un código diferente cada vez que el programa se instalase en un equipo diferente.

Código Delphi [-]
uses Registry;

const
  Clave = 1978;

function Cifrar(Texto: string; Clave: Longint): string;
var
  i: integer;
begin
  Result:= '';
  RandSeed:= Clave;
  for i:= 1 to Length(Texto) do
    Result:= Result + IntToHex(Byte(Texto[ i ]) xor Byte(Random(256)),2);
end;

function EstaRegistrado(Ident: string): boolean;
begin
  Result:= FALSE;
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\SOFTWARE\TuAplicacion',FALSE) then
    begin
      if ValueExists('Reg') then
        if ReadString('Reg') = Cifrar(Ident, Clave) then
          Result:= TRUE;
      CloseKey;
    end;
  finally
    Free;
  end;
end;

function Registrar(Ident: string; Codigo: string): boolean;
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\SOFTWARE\TuAplicacion',TRUE) then
    begin
      WriteString('Reg',Codigo);
      CloseKey;
    end;
  finally
    Free;
  end;
  Result:= EstaRegistrado(Ident);
end;

function GenerarCodigo(Ident: string): string;
begin
  Result:= Cifrar(Ident, Clave);
end;

La funcion Cifrar se utiliza como un generador de Hash pero puede sustituirse por cualquier algoritmo mejor, md5 por ejemplo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Usb en puerto serie :p D-MO Humor 10 30-06-2006 06:16:45
¿Se puede capturar los datos de un puerto serie de otra aplicación? NPIdea Varios 2 06-06-2006 13:45:19
Puerto serie esquerda21 Varios 2 12-05-2004 23:58:52
Impresoras Serie Fita Impresión 2 03-03-2004 20:21:53
Compartir Impresora por Puerto Serie para Aplicación en DOS sarackganda Windows 0 26-09-2003 15:55:36


La franja horaria es GMT +2. Ahora son las 03:24:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi