Data e Hora (problemático!)
12/12/2003
0
Com relação a data e hora, preciso saber duas coisas:
1- Como descobrir a data e a hora local, porém sem ser acessando as configurações do Windows?
Seria a mesma coisa que o Linux faz automaticamente quando conectado à internet por uma Lan de IP fixo (24h/dia), tomando como referência um relógio atômico de um lugar qualquer do mundo.
2- Como gravar em registros do Windows a data e a hora para que eu possa tomá-las como referência em consultas futuras?
Grato.
wbb
Wbb
Posts
12/12/2003
Deus
IdSNTP1.Active := True; repeat edit1.Text := FormatDateTime(´dd/mm/yyyy hh:mm:ss´, IdSNTP1.DateTime); Until (IdSNTP1.DateTime <> 0);
Configure o servidor do IdSNTP1 como [i:67d1b01e5d]time-a.nist.gov[/i:67d1b01e5d], que é um dos servidores de Data/Hora do NIST. Se preferir, clique [url=http://www.boulder.nist.gov/timefreq/service/time-servers.html]aqui[/url] para obter uma lista completa dos servidores. :)
Continuo a mensagem a seguir... abraços, dEUS. ;)
12/12/2003
Deus
function LerRegistro: TDateTime; var rgRegistro: TRegistry; begin try rgRegistro := TRegistry.Create; with rgRegistro do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey(´SOFTWARE\DataHora´, False) then Result := ReadDateTime(´HoraData´) else Result := 0; CloseKey; Free; end; except on E: Exception do ShowMessage(´Ocorreu o seguinte erro: ´ + E.Message); end; end; procedure CriarRegistro(DataHora: TDateTime); var rgRegistro: TRegistry; begin try rgRegistro := TRegistry.Create; with rgRegistro do begin RootKey := HKEY_LOCAL_MACHINE; OpenKey(´SOFTWARE\DataHora´, True); WriteDateTime(´HoraData´, DataHora); CloseKey; Free; end; except on E: Exception do ShowMessage(´Ocorreu o seguinte erro: ´ + E.Message); end; end;
Bem, o procedimento [i:9eddae02c3]CriarRegistro[/i:9eddae02c3] é um procedimento que vai, com o parâmetro [i:9eddae02c3]TDateTime[/i:9eddae02c3] que você passar, criar uma entrada no registro do Windows com esses dados. Já [i:9eddae02c3]LerRegistro[/i:9eddae02c3] é uma função que retorna o valor que foi gravado com [i:9eddae02c3]CriarRegistro[/i:9eddae02c3], que você pode guardar numa variável do tipo [i:9eddae02c3]TDateTime[/i:9eddae02c3]. Você usaria da seguinte forma:
CriarRegistro(Now); varHoraData := LerRegistro;
O que eu fiz foi criar um registro com a hora atual ([i:9eddae02c3]Now[/i:9eddae02c3]) e resgatar esse valor com a função [i:9eddae02c3]LerRegistro[/i:9eddae02c3].
Espero que seja isso o que você queria!! Abraços, dEUS.
13/12/2003
Wbb
Era isso mesmo que eu precisava.
O lance de ajuste de horas já está OK e funcionando, conforme sua indicação. Já com relação aos registros eu ainda não testei, mas acredito que não haverá problemas.
Obrigado pela ajuda.
wbb
Clique aqui para fazer login e interagir na Comunidade :)