Page 1 of 2

bug en SetFTime, no cambia la HORA

PostPosted: Sun Jun 23, 2013 10:32 am
by lucasdebeltran
Hola,

Code: Select all  Expand view
#include "fileio.ch"
#include "fivewin.ch"

function main()

set date to italian
set century on

test()

return nil



function test()

   local cApp   := "c:\windows\explorer.exe" //cFileName(GetModuleFileName(GetInstance()))

   local hFile2
   local dFecha := FileDate( cApp )
   local tHora  := FileTime( cApp )



   msgalert(cvaltochar(dFecha)+CRLF+CRLF+cValtochar(thora))



   hFile2 := FOpen( "fecha.prg", FO_READWRITE )

   SetFTime( hFile2, tHora, dFecha )

   FClose( hFile2 )


   dFecha := FileDate( "fecha.prg" )
   tHora  := FileTime( "fecha.prg" )

   msgalert(cvaltochar(dFecha)+CRLF+CRLF+cValtochar(thora), " de fecha.prg ")


return nil
 




No actualiza la hora de fecha.prg, el ejemplo anterior.



Muchas gracias.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Mon Jun 24, 2013 4:57 pm
by lucasdebeltran
Up+

Re: bug en SetFTime, no cambia la HORA

PostPosted: Mon Jun 24, 2013 5:32 pm
by Antonio Linares
Lucas,

la función SetFTime() use la función hb_pards() del extend API y por lo que se ve, esta función debe cambiar segun este el SET DATE y el SET CENTURY

Habra que localizar alguna función en Harbour que detecte esos SETs y que devuelva la hora en un formato común, salvo que ya exista dicha función y se trate solamente de localizarla en los fuentes de Harbour.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Mon Jun 24, 2013 5:33 pm
by Antonio Linares
Lucas,

Es solo la hora lo que esta mal ?

La fecha la cambia bien ?

Re: bug en SetFTime, no cambia la HORA

PostPosted: Mon Jun 24, 2013 6:39 pm
by lucasdebeltran
Antonio,

Sí, la fecha está bien, lo que falla es la hora.

Muchas gracias.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Mon Jun 24, 2013 7:02 pm
by Antonio Linares
Luis,

Pero por lógica, que relación puede tener la hora con SET DATE y SET CENTURY ?

No se me ocurre porque puedan estar relacionados.

Que hora es la que le pone ? Llega a cambiarla ?

Re: bug en SetFTime, no cambia la HORA

PostPosted: Mon Jun 24, 2013 7:55 pm
by lucasdebeltran
Antonio,

La hora del archivo permanece inalterada siempre.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 12:39 am
by rolando
Lucas,

Uso xHarbour (aclaro por las dudas tenga algo que ver).

Compilé tu ejemplo y aca cambia la fecha y hora. Lo que si hace de "raro" es algo que ya comenté en un post anterior y es que a la fecha hora que quiero ponerle, hay que sumarle tres horas antes de cambiarla ya que pareciera que convierte al horario UTC (para Argentina es -3) Vaya uno a saber el porqué

Pero funcionar, funciona.

por si quieres probarlo, subí el exe y el prg a:

https://www.box.com/s/m9w5ui7zkl1xc48xj1f2

Saludos.

Rolando

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 12:50 pm
by acuellar
Efectivamente es como dice Rolando

Coloca la hora del meridiano de Greenwich para Bolivia -4

Saludos,

Adhemar

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 2:44 pm
by Antonio Linares
Lucas,

El código fuente de SetFTime() es practicamente un wrapper a SetFileTime() del API de Windows, por eso me extraña que funcione a veces solamente.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724933(v=vs.85).aspx

Tal vez habria que comprobar el codigo de error de Windows con GetLastError() nada más llamar a SetFileTime() para ver si en tu caso, Lucas, devuelve algun valor que pueda dar una pista. Aqui funciona bien

http://msdn.microsoft.com/en-us/library/windows/desktop/ms679360(v=vs.85).aspx

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 4:21 pm
by lucasdebeltran
Antonio,

¿Has compilado mi ejemplo con Harbour?.

Si vas luego a la carpeta en el Explorador de Windows verás que la hora no se ha cambiado, a pesar de que según msgalert(cvaltochar(dFecha)+CRLF+CRLF+cValtochar(thora), " de fecha.prg ") debería estar cambiada, pero en el explorador de Windows, o incluso haciendo un dir, sigue inalterada.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 6:06 pm
by Antonio Linares
Lucas,

Puedes comprobar el resultado de SetFTime(), en caso de que devuelva .F. significaria que la función de Windows SetFileTime() no ha podido cambiar la hora.

No he probado tu ejemplo. Revise el código (sólo las primeras líneas) y te comenté que no veía la relación entre la fecha y la hora.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 6:08 pm
by Antonio Linares
Lucas,

Acabo de ver el código completo de tu ejemplo e intentas cambiar la hora del explorer en la carpeta Windows.

Salvo que seas administrador, ó tengas privilegios de administrador, eso jamas te permitiría Windows hacerlo.

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 6:20 pm
by rolando
Perdón que "meta la cuchara", pero lo que el programa hace es cambiar la fecha del "fecha.prg" colocandole la fecha y hora tomadas del explorer.exe

Eso acá lo hace correctamente como lo indiqué en entrada anterior (compilado con xHarbour). Salvo que usa la hora UTC

Rolando :D

Re: bug en SetFTime, no cambia la HORA

PostPosted: Tue Jun 25, 2013 6:31 pm
by Antonio Linares
Rolando,

gracias, a veces pienso más rápido que leo :-)

Lucas,

He modificado la función SetFTime() para que devuelva el código de error y devuelve un 6. Previamente devolvía un .F. que significa que no ha podido realizar la operación. Ahora voy a buscar que significa ese 6