Hola,
Os agradezco a todos vuestro esfuerzo, de verdad. No doy pie con bola y no es culpa vuestra, ni mucho menos. No me encuentro muy bien, a lo que se ve. Supongo que será algo pasajero, puesto que no es la primera vez que me ocurre.
Probando la última solución propuesta por Seoane (no me gusta copiar y pegar, pero, he tenido que hacerlo sin remedio) encuentro el siguiente problema:
(Nótese que el nombre de la función "CheckSerial" es ahora "ComprobarNumeroSerie" pero que no cambia más que esto)
Código Delphi
[-]
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;
if not Result then
begin
ShowMessage(Format('¿Número de serie incorrecto? %s', [numeroSerie]));
end;
end;
El caso es que incluso proporcionando un código de serie válido este resulta ser "no válido". Por tanto entramos en el "If not Result then...".
He podido comprobar que si no proporcino clave de usuario y sí únicamente el número de serie, entro en el "if not Result then..." y el mensaje muestra efectivamente el número de serie introducido.
Pero si añado la clave de usuario (como tiene que ser) junto con el número de serie, entonces tampoco valida el número (aunque sea correcto) y además el mensaje muestra el número "partido"... no completo...
Esto me supera, probablemente. No he comprobado esto último que comenta Neftalí, puesto que lo acabo de leer.

Y ya lo que me trae de cabeza es que intente buscar el número de serie en la memoria en antiguos programas en donde hacía uso del mismo sistema... y no aparezca.
O sea, que algo he tocado... y ya se sabe que lo que funciona no debe tocarse... ¡qué sé yo!
Bueno. Os agradezco a todos de veras el esfuerzo que ponéis en tratar de echarme una mano, pero, empiezo a pensar que debo tomarme esto mucho más seriamente de lo que soy capaz ahora mismo.
Tampoco corre prisa, supongo. Voy a tratar de tomármelo con más calma a ver qué tal...
Gracias a todos monstruos.
