Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #28  
Antiguo 28-03-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vale Seoane....

Sí; acabo de comprobar que funciona el asunto, y que el número de serie correcto no aparece en la memoria... ¡y esto quiere decir que lo he... que lo habéis conseguido! Toca ahora (para interesados) estudiar el código propuesto y saber porqué funciona y porqué antes no funcionaba...

En todo caso parece que el asunto está arreglado... en otro caso volveré a acosaros de nuevo. Gracias por todo. Si no fuera por vosotros probablemente esto me hubiera costado una úlcera (siempre quise decir algo así).

¡Muchas gracias!

PD. Cuando me asegure de que todo está en orden lo referiré de nuevo aquí, no podré evitarlo. Hasta pronto.

Por cierto... el código quedará más o menos de la siguiente forma:

Código Delphi [-]
unit UGeneradorSeriales;

interface

type
  TGeneradorSeriales = class
  public
    function ObtenerNumeroSerie(numeroBase:integer;
     claveUsuario: string): string;

    function ComprobarNumeroSerie(numeroBase: integer;
     claveUsuario: string; numeroSerie: string): boolean;
  end;

implementation

uses
  SysUtils;

// Made in Seoane :P (ClubDelphi.com)
function GetNum(var Str: String): Integer;
var
  i: integer;
begin
  result := 0;
  while TryStrToInt(Copy(Str,1,1),i) do
  begin
    result := (result * 10) + i;
    Delete(Str,1,1);
  end;
  Delete(Str,1,1);
end;

function TGeneradorSeriales.ObtenerNumeroSerie
 (numeroBase: integer; claveUsuario: string): string;
var
  A: integer;
begin
  if (numeroBase <> 0) and (claveUsuario <> '') then
  begin
    A := numeroBase * Length(claveUsuario) + Ord(claveUsuario[1]) * 666;
    result := IntToStr(A) + '-';
    A := numeroBase * Ord(claveUsuario[1]) * 123;
    result := result + IntToStr(A) + '-';
    A := numeroBase + (Length(claveUsuario) * Ord(claveUsuario[1])) * 6613;
    result := result + IntToStr(A);
  end;
end;

function TGeneradorSeriales.ComprobarNumeroSerie(numeroBase: integer;
 claveUsuario: string; numeroSerie: string): boolean;
var
  A: integer;
begin
  result := false;
  if (numeroBase <> 0) and (claveUsuario <> '') then
  begin
    A := numeroBase * Length(claveUsuario) + Ord(claveUsuario[1]) * 666;
    result := GetNum(numeroSerie) = A;
    A := numeroBase * Ord(claveUsuario[1]) * 123;
    result := result and (GetNum(numeroSerie) = A);
    A := numeroBase + (Length(claveUsuario) * Ord(claveUsuario[1])) * 6613;
    result := result and (GetNum(numeroSerie) = A);
  end;
end;

end.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 28-03-2007 a las 19:46:51.
Responder Con Cita
 



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
eliminar datos con dbgrid UREÑA Conexión con bases de datos 20 30-03-2007 23:41:32
Eliminar Datos eficientemente k_rito Conexión con bases de datos 5 27-11-2006 00:44:45
Cómo obtener ciertos datos de los archivos ejecutables y librerías StartKill Varios 1 14-08-2006 23:10:01
Eliminar del memoria los querys Aura OOP 4 01-04-2004 17:40:40
Eliminar datos de una tabla DBF vicvil Tablas planas 4 16-05-2003 21:17:46


La franja horaria es GMT +2. Ahora son las 06:49:05.


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