 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qua Jan 06, 2016 6:57 am Assunto: trial para distribuição.. [RESOLVIDO] |
|
|
Bom dia, pessoal!
Como faço uma versão trial para distribuição? Que programa usar?
Preciso limitar o tempo de uso para um sistema
Uso Delphi 7 e firebird.
Grato,
Luciano
Editado pela última vez por dleal em Dom Jan 10, 2016 7:58 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
Enviada: Qua Jan 06, 2016 10:47 am Assunto: |
|
|
Uma forma que vejo é salvando em algum lugar a data de primeira abertura do sistema...
Por exemplo:
- Regedit
- DLL
- Banco de Dados Offline e/ou Online
e ao abrir o sistema você faz validação de data se passou X dias... Isso tudo segue o mesmo principio de trava de um sistema, por exemplo, pedir chave de licença e tal.
Isso você que ficaria responsável de programar. _________________ Just another Delphi guy.
http://www.soft42.com
http://www.nortaonegocios.com.br |
|
| Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qua Jan 06, 2016 7:25 pm Assunto: |
|
|
| viox escreveu: | Uma forma que vejo é salvando em algum lugar a data de primeira abertura do sistema...
Por exemplo:
- Regedit
- DLL
- Banco de Dados Offline e/ou Online
e ao abrir o sistema você faz validação de data se passou X dias... Isso tudo segue o mesmo principio de trava de um sistema, por exemplo, pedir chave de licença e tal.
Isso você que ficaria responsável de programar. |
Obrigado, viox! vou colocar os neurônios pra se quebrarem... mas se eu precisar, posso recorrer???
Abraços,
Luciano |
|
| Voltar ao Topo |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
|
| Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qui Jan 07, 2016 7:56 pm Assunto: |
|
|
| viox escreveu: | Claro meu amigo, o que for de meu conhecimento ajudarei sem exitar  |
Boa noite, viox!
Seguindo seu raciocínio, comecei em fazer assim...
...criei uma tabela de nome "trial", com um campo data.
Ao entrar, grava a data atual. Mas como fazer o sistema gravar essa data
somente na primeira vez e a partir da segunda vez, comparar para poder bloquear?
Desculpe-me, a dúvida pode ser meio básica, mas nunca criei nada assim.
Se me der a lógica, continuo (pelo menos eu acho, rs)
Obrigado,
Luciano |
|
| Voltar ao Topo |
|
 |
netoferreira Novato

Registrado: Sexta-Feira, 19 de Dezembro de 2014 Mensagens: 77 Localização: Macapá - AP
|
Enviada: Qui Jan 07, 2016 9:10 pm Assunto: |
|
|
| dleal escreveu: | | viox escreveu: | Claro meu amigo, o que for de meu conhecimento ajudarei sem exitar  |
Boa noite, viox!
Seguindo seu raciocínio, comecei em fazer assim...
...criei uma tabela de nome "trial", com um campo data.
Ao entrar, grava a data atual. Mas como fazer o sistema gravar essa data
somente na primeira vez e a partir da segunda vez, comparar para poder bloquear?
Desculpe-me, a dúvida pode ser meio básica, mas nunca criei nada assim.
Se me der a lógica, continuo (pelo menos eu acho, rs)
Obrigado,
Luciano |
dleal
Uso algo parecido que você pode adaptar para o seu projeto
| Código: | if QueryAcesso.Fields.FieldByName('DT_dtmAcesso').AsDateTime > Now then
begin
Application.MessageBox('Data do Sistema Operacional incorreta!','Atenção',MB_OK+MB_ICONWARNING);
Application.MessageBox('Entre em contato com o Suporte!','Atenção',MB_OK+MB_ICONINFORMATION);
Application.Terminate;
Abort;
end;
DmDados.CDS_tbl_acesso.Open;
TClientDataSet(DS_tbl_acesso.DataSet).Insert;
if (DS_tbl_acesso.State in [dsInsert]) and (GetAcesso(Date)) then
begin
frmLogin.Close;
end
else
begin
TClientDataSet(DS_tbl_acesso.DataSet).Insert;
if DS_tbl_acesso.State in [dsInsert] then
try
DmDados.CDS_tbl_acessoCD_intAcesso.AsInteger := GetId('CD_intAcesso','tbl_acesso');
DmDados.CDS_tbl_acessoDT_dtmAcesso.AsDateTime := Now;
TClientDataSet(DS_tbl_acesso.DataSet).Post;
TClientDataSet(DS_tbl_acesso.DataSet).ApplyUpdates(0);
TClientDataSet(DS_tbl_acesso.DataSet).Open;
TClientDataSet(DS_tbl_acesso.DataSet).Close;
except on E : Exception do
raise Exception.Create('Erro ao registrar Data de Acesso: '+E.Message);
end;
end; |
No evento OnShow do form de Login com uma Query com o seguinte código
| Código: | | SELECT CD_intAcesso, MAX(DT_dtmAcesso) AS DT_dtmAcesso FROM tbl_acesso |
|
|
| Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qui Jan 07, 2016 9:26 pm Assunto: |
|
|
| netoferreira escreveu: | | dleal escreveu: | | viox escreveu: | Claro meu amigo, o que for de meu conhecimento ajudarei sem exitar  |
Boa noite, viox!
Seguindo seu raciocínio, comecei em fazer assim...
...criei uma tabela de nome "trial", com um campo data.
Ao entrar, grava a data atual. Mas como fazer o sistema gravar essa data
somente na primeira vez e a partir da segunda vez, comparar para poder bloquear?
Desculpe-me, a dúvida pode ser meio básica, mas nunca criei nada assim.
Se me der a lógica, continuo (pelo menos eu acho, rs)
Obrigado,
Luciano |
dleal
Uso algo parecido que você pode adaptar para o seu projeto
| Código: | if QueryAcesso.Fields.FieldByName('DT_dtmAcesso').AsDateTime > Now then
begin
Application.MessageBox('Data do Sistema Operacional incorreta!','Atenção',MB_OK+MB_ICONWARNING);
Application.MessageBox('Entre em contato com o Suporte!','Atenção',MB_OK+MB_ICONINFORMATION);
Application.Terminate;
Abort;
end;
DmDados.CDS_tbl_acesso.Open;
TClientDataSet(DS_tbl_acesso.DataSet).Insert;
if (DS_tbl_acesso.State in [dsInsert]) and (GetAcesso(Date)) then
begin
frmLogin.Close;
end
else
begin
TClientDataSet(DS_tbl_acesso.DataSet).Insert;
if DS_tbl_acesso.State in [dsInsert] then
try
DmDados.CDS_tbl_acessoCD_intAcesso.AsInteger := GetId('CD_intAcesso','tbl_acesso');
DmDados.CDS_tbl_acessoDT_dtmAcesso.AsDateTime := Now;
TClientDataSet(DS_tbl_acesso.DataSet).Post;
TClientDataSet(DS_tbl_acesso.DataSet).ApplyUpdates(0);
TClientDataSet(DS_tbl_acesso.DataSet).Open;
TClientDataSet(DS_tbl_acesso.DataSet).Close;
except on E : Exception do
raise Exception.Create('Erro ao registrar Data de Acesso: '+E.Message);
end;
end; |
No evento OnShow do form de Login com uma Query com o seguinte código
| Código: | | SELECT CD_intAcesso, MAX(DT_dtmAcesso) AS DT_dtmAcesso FROM tbl_acesso |
|
opa, boa noite, netoferreira
vou estudar seu código, depois de fazer as adaptações necessárias, posto o resultado.
Agradeço a boa vontade!
Abraços,
Luciano D.Leal |
|
| Voltar ao Topo |
|
 |
netoferreira Novato

Registrado: Sexta-Feira, 19 de Dezembro de 2014 Mensagens: 77 Localização: Macapá - AP
|
Enviada: Sex Jan 08, 2016 1:10 am Assunto: |
|
|
dleal,
Esse código foi usado no MySQL. |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Sex Jan 08, 2016 8:46 am Assunto: |
|
|
| dleal escreveu: | | viox escreveu: | Claro meu amigo, o que for de meu conhecimento ajudarei sem exitar  |
Boa noite, viox!
Seguindo seu raciocínio, comecei em fazer assim...
...criei uma tabela de nome "trial", com um campo data.
Ao entrar, grava a data atual. Mas como fazer o sistema gravar essa data
somente na primeira vez e a partir da segunda vez, comparar para poder bloquear?
Desculpe-me, a dúvida pode ser meio básica, mas nunca criei nada assim.
Se me der a lógica, continuo (pelo menos eu acho, rs)
Obrigado,
Luciano |
Você pode colocar uma condição assim:
- Se a data for nula é a primeira vez (grava a data atual)
- Senão faça a comparação.
| Código: | if Query1.FieldByName('CampoData').IsNull then
//Grava a data atual
else
// Faça a comparação |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Dom Jan 10, 2016 8:03 am Assunto: |
|
|
| natanbh1 escreveu: | | dleal escreveu: | | viox escreveu: | Claro meu amigo, o que for de meu conhecimento ajudarei sem exitar  |
Boa noite, viox!
Seguindo seu raciocínio, comecei em fazer assim...
...criei uma tabela de nome "trial", com um campo data.
Ao entrar, grava a data atual. Mas como fazer o sistema gravar essa data
somente na primeira vez e a partir da segunda vez, comparar para poder bloquear?
Desculpe-me, a dúvida pode ser meio básica, mas nunca criei nada assim.
Se me der a lógica, continuo (pelo menos eu acho, rs)
Obrigado,
Luciano |
Você pode colocar uma condição assim:
- Se a data for nula é a primeira vez (grava a data atual)
- Senão faça a comparação.
| Código: | if Query1.FieldByName('CampoData').IsNull then
//Grava a data atual
else
// Faça a comparação |
|
Boa noite, viox!
Seguindo seu raciocínio, comecei em fazer assim...
...criei uma tabela de nome "trial", com um campo data.
Ao entrar, grava a data atual. Mas como fazer o sistema gravar essa data
somente na primeira vez e a partir da segunda vez, comparar para poder bloquear?
Desculpe-me, a dúvida pode ser meio básica, mas nunca criei nada assim.
Se me der a lógica, continuo (pelo menos eu acho, rs)
Obrigado,
Luciano[/quote]
Você pode colocar uma condição assim:
- Se a data for nula é a primeira vez (grava a data atual)
- Senão faça a comparação.
[code]if Query1.FieldByName('CampoData').IsNull then
else
Bom dia viox!
Seguindo a lógica que me propôs, resolvi o problema, fazendo o seguinte:
No "on show" do form principal:
[code]
procedure Tfprincipal.FormShow(Sender: TObject);
begin
dmdados.tbl_trial.open;
dmdados.tbl_trial.edit;
if dmdados.tbl_trial.FieldByName('Data').IsNull then
dmdados.tbl_trialDATA.Value:=(date)
else
if (date) >= (dmdados.tbl_trialDATA.Value) + 30 then
begin
ShowMessage('O prazo para avaliação do software expirou! Contate-nos para adquirir uma cópia completa: ');
close;
end;
end;
[/code]
Fiz os testes e está funcionando perfeitamente.
Obrigado a todos por disporem de seu tempo e me ajudar em mais essa dúvida.
Abraços,
Luciano |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|