Obter data e hora do servidor

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Obter data e hora do servidor

Mensagem por alaminojunior »

Também não vejo porquê não linkar com Blinker.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obter data e hora do servidor

Mensagem por Maligno »

Pablo César escreveu:Será falta de memória ? Por quê com BLINKER funcionou e com RTLINK não ???
A resposta nisso esta no meio através do qual o interpretador de comandos foi re-instanciado. O comando RUN é bem pobrinho. E a função SwpRunCmd(), muito provavelmente, utiliza algum outro recurso, que torna possível execuções desse tipo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Obter data e hora do servidor

Mensagem por alxsts »

Meus caros, agradeço pelo interesse e empenho em ajudar com suas pesquisas.

Fiz mais alguns testes: criei o .Bat que o Maligno sugeriu e não funcionou tambem.
Linkeditando com o Exospace, de qualquer forma funciona!
Concluo que quando utilizo o RTLink, não há memória suficiente para rodar o Net Time (ele nem mostra a mensagem "Programa muito grande para ser carregado na memória" ). Por isso tentei rodar o CMD /C START, na tentativa de rodar em outra janela, com outro espaço de memória.

Vou dar um jeito de usar o Exospace ou BLinker.

Segue em anexo o código da função, se quiserem analisar.

Obrigado a todos.

[]s
AlxSts
Anexos
srvrdate.prg
Obter data e hora do servidor
(2.45 KiB) Baixado 202 vezes
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

O comando SwpRunCmd("CMD /C NET TIME > NULL") mesmo em BLINKER como o Maligno indicou, não está funcionando gente.
alxsts escreveu:Fiz mais alguns testes: criei o .Bat que o Maligno sugeriu e não funcionou tambem.
Não foi Maligno que indicou, mas isso não importa. Acho que você não deve ter feito como eu indiquei. Pois executando o NET TIME através de arquivo BATCH, funciona sim !

Aproveitando o seu próprio código, fiz algumas modificações, compile e verá que funciona:

Código: Selecionar todos

PARAMETERS VSERV

IF VSERV=NIL
   ? "Informe parametro !. Coloque o nome do servidor."
   ? "Exemplo: SRVRDATE SERVIDOR02"
   QUIT
ENDIF
? GetSvrSysDateTime( VSERV, .F.)

FUNCTION GetSvrSysDateTime( cServer, lSync )
Local dDate,cTime, nStart, nEnd, cString, nLen
Local cSetDate, cCommand
Local cRet := ""

// DEFAULT cServer TO "\\Server02"
// DEFAULT lSync   TO .F.           // Sincronizar estacao X servidor (Tratar depois)

IF ! Empty( "DATAHORA.TXT" )
   MEMOWRIT("VESERVER.BAT","@NET TIME \\"+cServer+" > DATAHORA.TXT")
   cCommand := "VESERVER.BAT"
   RUN ( cCommand )

   IF File("DataHora.txt")
      cString := Memoread("DataHora.txt")
      IF ( ! Empty( cString ) )
         nLen := AT( "/", cString )

         IF nLen > 0
            cSetDate := Set( _SET_DATEFORMAT, "mm/dd/yyyy" )

            While Substr( cString, nLen, 1 ) != " "
               nLen--
            Enddo

            nStart := nLen + 1

            cString := Substr( cString, nStart, Len( cString ) )

            nEnd := AT( " ", cString )

            dDate := Ctod( Substr( cString, 1, nEnd - 1 ) )

            cString := Substr( cString, nEnd + 1, Len( cString ) )

            nEnd := AT( " ", cString )

            cTime := Substr( cString, 1, nEnd - 1 )

            cString := Substr( cString, nEnd + 1, Len( cString ) )

            nEnd := AT( ":", cTime )

            If nEnd == 2
               cTime := StrZero( Val( Left( cTime, 1 ) ), 2 ) + ":" + Substr( cTime, nEnd + 1, 2 )
            Endif

            IF ( At( "PM", cString ) > 0 ) .And. Left( cTime, 2 ) != "12"
               cTime := StrZero( Val( Left( cTime, 2 ) ) + 12, 2 ) + Substr( cTime, 3, 3 )
            ELSEIF ( At( " AM", cString ) > 0 ) .And. Left( cTime, 2 ) == "12"
               cTime := "00" + Right( cTime, 3 )
            ENDIF
         ELSE
            dDate := CtoD( "" )
            cTime := "  :  "
         ENDIF
         DELETE FILE( "DATAHORA.TXT" )
      ENDIF
   ENDIF

   Set( _SET_DATEFORMAT, cSetDate )

   cRet := DtoC( dDate ) + " " + cTime
ENDIF
RETURN cRet
Acho que compilando, não resta dúvidas.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obter data e hora do servidor

Mensagem por Maligno »

Estranho. Pra mim funcionou certinho. Quem explica? :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

Maligno, você experimentou com: SwpRunCmd("CMD /C NET TIME > NULL") ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Obter data e hora do servidor

Mensagem por alxsts »

Pablo, desculpe, confundi quem me sugeriu o .Bat.

O .Bat que criei está certo (@NET TIME \\Server02 > DATAHORA.TXT)

Rodei a tua versão da rotina, de forma isolada. Funcionou perfeitamente.

Embuti na minha aplicação e obtive os mesmos resultados de antes: com RTLink não funciona e com ExoSpace funciona. Isso reforça a minha tese de falta de memória. Mas vou mudar para Exospace. Não vamos mais perder tempo com isto, a não ser por curiosidade.

Obrigado a todos.

[]s
AlxSts
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Obter data e hora do servidor

Mensagem por Pablo César »

Ahhh entendí Alex, eu também cheguei a pensar nessa possibilidade (falta de memória). Só que antes de compilar com Exospace, aceite um conselho. Não use mais esse linkador, utilize o BLINKER, ele é tão bom quanto e melhor até. Você vai ver que vai te mais ganho, por quê não utiliza o BLINKER ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder