Fórum Ajuda na comparaçao de datas no registro windows #303156
24/11/2005
0
Jah consegui fazer gravar a data atual no envento onshow do form como no codigo abaixo:
regbb:=tregistry.create;
try
regbb.rootkey:=HKEY_CURRENT_USER;
if not regbb.KeyExists(´Software\Microsoft\Config\Key\Windows\backup´) = true then
regbb.CreateKey(´Software\Microsoft\Config\Key\Windows\backup´);
data:= DateToStr(now);
regbb.OpenKey(´Software\Microsoft\Config\Key\Windows\backup´,true);
regbb.WriteTime(data,now);
finally
regbb.Free;
O problema eh usar a chave pra comparar com a data atual e se for igual ou maior que 30 dias, de 30 em 30 dias...
Obrigado..
O4pr3ndiz
Curtir tópico
+ 0Posts
25/11/2005
Marcio.theis
Gostei + 0
25/11/2005
Emerson Nascimento
deveria ser algo assim:
var
regbb: tregistry;
dataultimobackup: TDate;
begin
regbb := tregistry.create;
try
regbb.rootkey:=HKEY_CURRENT_USER;
regbb.OpenKey(´Software\Microsoft\Config\Key\Windows\backup´,true);
try
dataultimobackup := regbb.ReadDate(´data´);
except
dataultimobackup := sysutils.date - 30;
end;
if (trunc(sysutils.date - dataultimobackup) >= 30) and
(application.MessageBox(´É necessário efetuar o backup. Deseja fazer isso agora?´,
´Backup´,MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON1) = mrYes) then
begin
{rotina de execução do backup}
if BackupEfetuadoComSucesso then
regbb.WriteDate(´data´,sysutils.date);
end;
finally
regbb.Free;
end;
end;você poderia ainda colocar essa rotina num Timer, para ser executada de hora em hora assim, se o usuário não fizer o backup na abertura do programa, ele será avisado de hora em hora, até que aceite executar o backup.
Gostei + 0
26/11/2005
O4pr3ndiz
1) erro na linha
dataultimoITA := regita.ReadDate(´data´);
na compilação exibe o erro ERegistryException ´Failed to get data for ´data´
e naum executa o projeto, mudei pra data := DateToStr(now);
e tb naum resolveu.
Eu li sobre o readdate e naum vi nehuma anormalidade de sintaxe, tanto que passo pelo ctrl+F9.
Se puder me ajudar..
Estou precisando disto com urgencia... obrigado
Gostei + 0
26/11/2005
Emerson Nascimento
Gostei + 0
26/11/2005
O4pr3ndiz
Mas valew a força..
Gostei + 0
01/12/2005
Emerson Nascimento
Gostei + 0
02/12/2005
O4pr3ndiz
altererei a data do sistema e tudo depois nda.. ele cria a pasta backup no registro vazia....
Eu ainda naum percebi o que aconteceu..
Gostei + 0
02/12/2005
Emerson Nascimento
fiz assim:
coloquei um timer com intervalo de 30.000 (30 segundos)
data atual: 01/12/2005 (1o. de dezembro de 2005)
- rodei o programa;
- depois de 30 segundos o programa perguntou se eu queria efetuar o bkp. respondi que [b:703227ba0a]não[/b:703227ba0a];
- depois de mais 30 segundos perguntou de novo. respondi que [b:703227ba0a]não[/b:703227ba0a] novamente;
- mais 30 segundos e perguntou novamente. respondi que [b:703227ba0a]sim[/b:703227ba0a], queria efetuar o bkp;
- nos 30 segundos seguintes a [i:703227ba0a]pergunta não apareceu[/i:703227ba0a]. esperei mais uns 5 minutos e a [i:703227ba0a]pergunta não apareceu[/i:703227ba0a] mais.
- alterei a data para 31/12/2005 - 31 de dezembro de 2005 - portanto, TRINTA DIAS PRA FRENTE, e a pergunta começou a aparecer novamente.
ou seja, tudo funcionou como devido...
OBS.: o registro do windows só será alterado se você optar por efetuar o bkp e esse for efetuado com sucesso (conforme aquele código passado)
p.s.: eu só gostaria de acrescentar duas linha àquele código:
var
regbb: tregistry;
dataultimobackup: TDate;
begin
TIMER1.ENABLED := FALSE; // nova linha
regbb := tregistry.create;
try
regbb.rootkey:=HKEY_CURRENT_USER;
regbb.OpenKey(´Software\Microsoft\Config\Key\Windows\backup´,true);
try
dataultimobackup := regbb.ReadDate(´data´);
except
dataultimobackup := sysutils.date - 30;
end;
if (trunc(sysutils.date - dataultimobackup) >= 30) and
(application.MessageBox(´É necessário efetuar o backup. Deseja fazer isso agora?´,
´Backup´,MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON1) = mrYes) then
begin
{rotina de execução do backup}
if BackupEfetuadoComSucesso then
regbb.WriteDate(´data´,sysutils.date);
end;
finally
regbb.Free;
end;
TIMER1.ENABLED := TRUE; // nova linha
end;assim o timer será executado e, se for o necessário, irá esperar a resposta do usuário para reiniciar a contagem do tempo.
Gostei + 0
02/12/2005
O4pr3ndiz
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)