SetLocalTime não funcionando ***Precisando de ajuda***

16/04/2013

0

Embora tenha achado alguns posts a respeito, não consegui fazer funcionar! Se alguém puder me ajudar, agradeço pela atenção. (utilizando delphi 7, SO windows 7).

Descrição do Problema: Utilizo no form o componente RxClock para mostrar para o usuário a hora corrente. Ao alterar a hora diretamente, através da barra de tarefas do windows, altera de imediato também no componente RxClock. Mas ao tentar alterar a hora via programação, não funciona, digo, não altera. Alguém poderia me dizer o porquê?

Segue o código:

Procedure HoraCerta;
var
st:TSYSTEMTIME;
begin
(*) definir a hora da estacao igual com a do servidor (*)

self.QyHoraCerta.Close;
self.QyHoraCerta.Open;

//atualiza hora local
GetLocalTime(st);
DateTimeToSystemTime(self.QyHoraCertaDATAHORA.AsDateTime,st);
SetLocalTime(st);

vHora := FrmPrincipal.QyHoraCertaHORA.AsDateTime;

end;
Ricardo Lucena

Ricardo Lucena

Responder

Posts

17/04/2013

Ricardo Lucena

Galera, alguma sugestão do que possa estar faltando para que a função setlocaltime funcione?!? Preciso da ajuda da comunidade, muito embora essa questão pareça simples não tenho conseguido solucionar... :(

Embora tenha achado alguns posts a respeito, não consegui fazer funcionar! Se alguém puder me ajudar, agradeço pela atenção. (utilizando delphi 7, SO windows 7).

Descrição do Problema: Utilizo no form o componente RxClock para mostrar para o usuário a hora corrente. Ao alterar a hora diretamente, através da barra de tarefas do windows, altera de imediato também no componente RxClock. Mas ao tentar alterar a hora via programação, não funciona, digo, não altera. Alguém poderia me dizer o porquê?

Segue o código:

Procedure HoraCerta;
var
st:TSYSTEMTIME;
begin
(*) definir a hora da estacao igual com a do servidor (*)

self.QyHoraCerta.Close;
self.QyHoraCerta.Open;

//atualiza hora local
GetLocalTime(st);
DateTimeToSystemTime(self.QyHoraCertaDATAHORA.AsDateTime,st);
SetLocalTime(st);

vHora := FrmPrincipal.QyHoraCertaHORA.AsDateTime;

end;
Responder

17/04/2013

Rafael Cunha

Cara eu utilizo da seguinte maneira e funciona normalmente.

procedure TDmPrincipal.SynchronizeDh;
var
  SystemTime: TSystemTime;
begin
  FDhSynchronized := False;
  DateTimeToSystemTime(GetCurrentDateTime, SystemTime);
  FDhSynchronized := SetLocalTime(SystemTime);
end;
Responder

18/04/2013

Ricardo Lucena

Pô Rafael, obg por responder...

Dúvida nesse teu código: Requer declaração de alguma classe pra reconhecer essa variável "FDhSynchronized", ou vc a declarou como sendo uma variável local/global, apenas pra retornar como valor da procedure SynchronizeDh?

No aguardo... obg!

Cara eu utilizo da seguinte maneira e funciona normalmente.

procedure TDmPrincipal.SynchronizeDh;
var
  SystemTime: TSystemTime;
begin
  FDhSynchronized := False;
  DateTimeToSystemTime(GetCurrentDateTime, SystemTime);
  FDhSynchronized := SetLocalTime(SystemTime);
end;
Responder

18/04/2013

Rafael Cunha

Pô Rafael, obg por responder...

Dúvida nesse teu código: Requer declaração de alguma classe pra reconhecer essa variável "FDhSynchronized", ou vc a declarou como sendo uma variável local/global, apenas pra retornar como valor da procedure SynchronizeDh?

No aguardo... obg!

Cara eu utilizo da seguinte maneira e funciona normalmente.

procedure TDmPrincipal.SynchronizeDh;
var
  SystemTime: TSystemTime;
begin
  FDhSynchronized := False;
  DateTimeToSystemTime(GetCurrentDateTime, SystemTime);
  FDhSynchronized := SetLocalTime(SystemTime);
end;


Cara pode ignorar o FDhSynchronized é apenas um variável que utilizo para verificar se o sistema conseguiu sincronizar o relógio com o servidor, caso negativo busto toda hora a hora no server.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar