Re: Obter data e hora do servidor
Enviado: 12 Nov 2008 19:36
Também não vejo porquê não linkar com Blinker.
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.Pablo César escreveu:Será falta de memória ? Por quê com BLINKER funcionou e com RTLINK não
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 !alxsts escreveu:Fiz mais alguns testes: criei o .Bat que o Maligno sugeriu e não funcionou tambem.
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