Ajuda na comparaçao de datas no registro windows
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
Posts
25/11/2005
Marcio.theis
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.
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
26/11/2005
Emerson Nascimento
26/11/2005
O4pr3ndiz
Mas valew a força..
01/12/2005
Emerson Nascimento
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..
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.
Clique aqui para fazer login e interagir na Comunidade :)