Expirar programa
Estou tendo dificuldades para entender e colocar para funcionar uma função que faça com que o programa expire em determinada data. Pesquisei no forum um montão e tentei implementar esta abaixo que gera um código, e tentei fazer gerar com um n. de CNPJ e uma data. Que funcionou, mas como fazer para inserir esta data depois com o prazo de mais 30 dias.
function GeraCod(Cad: string):string;
const
Chave:string = ´j5Klmljk2hUV4A´;
var
Cod:string;
Pdt,Sm,x,y,w:integer;
Psc: array[1..100] of integer;
begin
for x:=1 to 26 do Cod:=Cod+Chr(64+x)+Chr(123-x);
Cad:=Chave+Cad;
Cod:=Cod+Cad;
for y:=1 to Length(Cad) do
begin
x:=0;
repeat x:=x+1;
until Cad[y]=Cod[x];
Psc[y]:=x;
end;
Sm:=0;
Result:=´´;
y:=Length(Cad);
Cod:=´69ADGJMPSVYX147BEHKNQOTWZ258CF0ILRU3´;
for x:=1 to 4 do
begin
for w:=1 to y do
begin
Pdt:=Psc[w]*(y-w+2);
Sm:=Sm+Pdt;
end;
Sm:=(Sm mod 36)+1;
Result:=Result+Cod[Sm];
y:=y+1;
Psc[y]:=Sm;
Sm:=0;
end;
end;
function GeraSenha(Str: string): string;
begin
Result:=GeraCod(Str);
Result:=Result+´-´+GeraCod(Result);
Result:=Result+´-´+GeraCod(Result);
end;
end.
{Teste do código}
procedure TForm1.FormActivate(Sender: TObject);
begin
Edit1.Text:=(GeraCod(SerialNum(´C´)));
Label1.caption:=´Chave: ´+GeraSenha(Edit1.Text);
end;
{Para testar , digite a Chave no Edit2}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit2.Text=GeraSenha(Edit1.Text)then
ShowMessage(´Chave Confere´)else
ShowMessage(´Chave Não Confere´);
end;
function GeraCod(Cad: string):string;
const
Chave:string = ´j5Klmljk2hUV4A´;
var
Cod:string;
Pdt,Sm,x,y,w:integer;
Psc: array[1..100] of integer;
begin
for x:=1 to 26 do Cod:=Cod+Chr(64+x)+Chr(123-x);
Cad:=Chave+Cad;
Cod:=Cod+Cad;
for y:=1 to Length(Cad) do
begin
x:=0;
repeat x:=x+1;
until Cad[y]=Cod[x];
Psc[y]:=x;
end;
Sm:=0;
Result:=´´;
y:=Length(Cad);
Cod:=´69ADGJMPSVYX147BEHKNQOTWZ258CF0ILRU3´;
for x:=1 to 4 do
begin
for w:=1 to y do
begin
Pdt:=Psc[w]*(y-w+2);
Sm:=Sm+Pdt;
end;
Sm:=(Sm mod 36)+1;
Result:=Result+Cod[Sm];
y:=y+1;
Psc[y]:=Sm;
Sm:=0;
end;
end;
function GeraSenha(Str: string): string;
begin
Result:=GeraCod(Str);
Result:=Result+´-´+GeraCod(Result);
Result:=Result+´-´+GeraCod(Result);
end;
end.
{Teste do código}
procedure TForm1.FormActivate(Sender: TObject);
begin
Edit1.Text:=(GeraCod(SerialNum(´C´)));
Label1.caption:=´Chave: ´+GeraSenha(Edit1.Text);
end;
{Para testar , digite a Chave no Edit2}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit2.Text=GeraSenha(Edit1.Text)then
ShowMessage(´Chave Confere´)else
ShowMessage(´Chave Não Confere´);
end;
Klaus
Curtidas 0
Respostas
Bruno Leandro
18/05/2012
uma ideia seria guardar a chave no banco, ou em um arquivo, ou no registro do windows, são alguns exemplos. ai para atualizar mais trinta dias, voce enviaria um update, ou outro arquivo.
GOSTEI 0
Klaus
18/05/2012
Bruno, a idéia é guardar no BD criptografado, mas preciso entender este codigo e como inserir ele no programa, pois fiz uns testes tentando mudar onde está chave = string= .... e não consegui, gostaria de inserir nesta string uma data atraves de uma edit, que seria a data que iria expirar o programa.
GOSTEI 0
Ricardo Matarazzo
18/05/2012
O que eu geralmente faço é o seguinte, tenho uma funçao que o programa checa toda vez que abre onde verifica dentro do banco mes e ano, se encontrar e se o numero que estiver la bater ao calculo da funçao abre o programa caso contrario solicita a chave para o mês
GOSTEI 0
Klaus
18/05/2012
Ok Ricardo, também acho que seria este o procedimento correto, mas não sei como usar a função acima e gostaria que alguém me explicasse, se não for muito díficil, pois quero usá-la para inserir uma chave no BD (cript) e poder recuperá-la e checar sua validade e inserir uma nova data mes a mes.
GOSTEI 0