Bug en la Funcion SetDate() 32bits

Bug en la Funcion SetDate() 32bits

Postby cuatecatl82 » Sat Jun 30, 2007 2:16 pm

Hola estimados colegas del foro, tengo el siguiente problema ojala y alguno de ustedes lo haya resuelto, y es un tema del cual ya se hablo pero del que todavia nadie a dado respuesta

Resulta que uso la funcion SETDATE() para el cambio de fecha de Windows el cual lo uso así:

STATIC dInicial ---------->>Al inicio de la aplicacion lo he probado tambien como PUBLIC.

SET DATE TO BRITISH ---------->>Dentro de la Funcion Main
SET CENTURY ON
SET EPOCH TO 2000
dInicial:= Date()

Dentro del sistema cambio la fecha de windows con la misma funcion esto lo hago para revisar la informacion de meses pasados, ya que mi sistema usa una carpeta de informacion por mes de trabajo... aki funciona bien y sin problemas con esta funcion..

FUNCTION CambiaFecha()

LOCAL dVar1:= DATE()
LOCAL oDlg,oGet,oBtn1,oBtn2
LOCAL lSal:= .F.

DEFINE DIALOG oDlg RESOURCE "SELFECHA" TITLE "Cambiar Fecha de Trabajo" OF oWndMain
REDEFINE BTNGET oGet VAR dVar1 ID 102 OF oDlg RESOURCE "B_CALE" SPINNER;
ON UP (++dVar1,oGet:REFRESH()) ON DOWN (--dVar1,oGet:REFRESH());
ACTION (aRect := GetCoors(oGet:hWnd),;
dVar1 := FwCalendar(dVar1,aRect[1],aRect[4],oDlg),;
oGet:REFRESH())
REDEFINE BUTTON oBtn1 ID 107 OF oDlg ACTION (SetDate( DAY( dVar1 ), MONTH( dVar1 ), YEAR( dVar1 ) ), SYSREFRESH(), CambMes(dVar1), CreArchi(), Indexa(), lSal:= .T., oDlg:END())
REDEFINE BUTTON oBtn2 ID 108 OF oDlg ACTION (lSal:= .T., oDlg:END()) CANCEL

ACTIVATE DIALOG oDlg CENTERED VALID (lSal)
Return nil

Hasta aki todo bien..

SetDate( DAY(dInicial), MONTH(dInicial), YEAR(dInicial) ) ---------->> Esto lo hago al salir la aplicacion por si el usuario se olvida de regresar la fecha de windows a la fecha inicial, la cual la tome al principio.

Por una extraña razon al momento de hacer el cambio de fecha la atrasa un dia, y lo hace por cada vez que salgo del programa entre las 9 y 11 de la noche, y en horarios diferentes durante el día, cosa que no pasaba con 16bits, ya revise el código fuente de esta funcion y son exactamente iguales, si hago esto:

SetDate( DAY(dInicial)+1, MONTH(dInicial), YEAR(dInicial) )

le sumo 1 día más pa que no regrese y que es una de las soluciones posteadas en este foro, tambien lo hace, en algunas ocaciones regresa hasta 2 días atras..

Alguien puede explicar porque con xharbour y fivewin falla y porque no con clipper y fivewin no..?

Maestraso Antonio Linares... Ahi le dejo esta carta al aire..

No creo sel el único con este problema....

FHW 2.6 + xHarbour 0.45 Flex
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Bug en la Funcion SetDate() 32bits

Postby Wanderson » Fri Jul 06, 2007 7:39 pm

cuatecatl82 wrote:Hola estimados colegas del foro, tengo el siguiente problema ojala y alguno de ustedes lo haya resuelto, y es un tema del cual ya se hablo pero del que todavia nadie a dado respuesta

Resulta que uso la funcion SETDATE() para el cambio de fecha de Windows el cual lo uso así:

STATIC dInicial ---------->>Al inicio de la aplicacion lo he probado tambien como PUBLIC.

SET DATE TO BRITISH ---------->>Dentro de la Funcion Main
SET CENTURY ON
SET EPOCH TO 2000
dInicial:= Date()

Dentro del sistema cambio la fecha de windows con la misma funcion esto lo hago para revisar la informacion de meses pasados, ya que mi sistema usa una carpeta de informacion por mes de trabajo... aki funciona bien y sin problemas con esta funcion..

FUNCTION CambiaFecha()

LOCAL dVar1:= DATE()
LOCAL oDlg,oGet,oBtn1,oBtn2
LOCAL lSal:= .F.

DEFINE DIALOG oDlg RESOURCE "SELFECHA" TITLE "Cambiar Fecha de Trabajo" OF oWndMain
REDEFINE BTNGET oGet VAR dVar1 ID 102 OF oDlg RESOURCE "B_CALE" SPINNER;
ON UP (++dVar1,oGet:REFRESH()) ON DOWN (--dVar1,oGet:REFRESH());
ACTION (aRect := GetCoors(oGet:hWnd),;
dVar1 := FwCalendar(dVar1,aRect[1],aRect[4],oDlg),;
oGet:REFRESH())
REDEFINE BUTTON oBtn1 ID 107 OF oDlg ACTION (SetDate( DAY( dVar1 ), MONTH( dVar1 ), YEAR( dVar1 ) ), SYSREFRESH(), CambMes(dVar1), CreArchi(), Indexa(), lSal:= .T., oDlg:END())
REDEFINE BUTTON oBtn2 ID 108 OF oDlg ACTION (lSal:= .T., oDlg:END()) CANCEL

ACTIVATE DIALOG oDlg CENTERED VALID (lSal)
Return nil

Hasta aki todo bien..

SetDate( DAY(dInicial), MONTH(dInicial), YEAR(dInicial) ) ---------->> Esto lo hago al salir la aplicacion por si el usuario se olvida de regresar la fecha de windows a la fecha inicial, la cual la tome al principio.

Por una extraña razon al momento de hacer el cambio de fecha la atrasa un dia, y lo hace por cada vez que salgo del programa entre las 9 y 11 de la noche, y en horarios diferentes durante el día, cosa que no pasaba con 16bits, ya revise el código fuente de esta funcion y son exactamente iguales, si hago esto:

SetDate( DAY(dInicial)+1, MONTH(dInicial), YEAR(dInicial) )

le sumo 1 día más pa que no regrese y que es una de las soluciones posteadas en este foro, tambien lo hace, en algunas ocaciones regresa hasta 2 días atras..

Alguien puede explicar porque con xharbour y fivewin falla y porque no con clipper y fivewin no..?

Maestraso Antonio Linares... Ahi le dejo esta carta al aire..

No creo sel el único con este problema....

FHW 2.6 + xHarbour 0.45 Flex


A mi me da lo mesmo bug,
Solução: no uso mas SetDate()

:(

Salud2
Wanderson
 
Posts: 332
Joined: Thu Nov 17, 2005 9:11 pm

Saludos

Postby sildata » Sat Jul 21, 2007 11:43 am

Amigo y colega, tomalo como una simple sugerencia, trata en lo posible de independizar los manejos de las fechas, es decir maneja dentro de tu sistema tu propia fecha que sea independiente de la del WINDOWS, con alguna variable PUBLIC, o cualquier otro medio, tienes mucha mas libertad y muchos menos peligros; anteriormente yo lo hacia como tu a travez de la fecha de la computadora y en alguna ocacion se le olvido al operador REPONER la fecha original y recien nos vinimos a dar cuenta al fin de mes, como te podras imaginar; el arroz con mango que se armo en la facturacion era de padre y señor mio. Ademas hay algunos programas como por ejemplo los antivirus que monitorean los cambios de fecha de la computadora y como respuesta te salen algunos mensajes y pueden llegar ha colgarte la maquina.
Espero haberte ayudado.
Rodolfo Silva
sildata@cantv
sildata
 
Posts: 38
Joined: Thu May 11, 2006 7:41 pm

Postby cuatecatl82 » Sat Jul 21, 2007 3:08 pm

Estimado Rodolfo Silva:

:) Agradesco tu humilde opinión y coincido contigo, ya decidi dejar esa función SETDATE() para el cambio de fecha, ya que no hay una solución para este :twisted: ENORME BUG :evil: , creo que como nosotros muchos han pasado por este pequeñisimo inconveniente y han tenido que elegir otras opciones puesto que no nos dan una solución eficaz o en su defecto una corrección o codigo fuente que funcione, te comento que ya trabajo sobre esto y espero en estos días poder corregirlo, :idea: tengo pensado escribir algo de codigo para crea una nueva función para todos aquellos que necesitamos esta valiosa función :P .

En cuento lo tenga la subo al foro para todos los que la necesiten.

Saludos desde Chiapas, México
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby R.F. » Sun Jul 22, 2007 9:10 am

Yo tenia el mismo problema y lo solucioné con la librería funcky:

Code: Select all  Expand view  RUN
oFuncky := TOleAuto():New("funcky")
oDate := oFuncky:CreateDate()

oDate:Set("mm/dd/aa") // siempre en formato mm/dd/aa


y listo, la función devuelve .t. si la fecha del sistema se cambió con éxito, .f. si hubo algún problema
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby cuatecatl82 » Mon Jul 23, 2007 11:15 pm

Saludos RF:

Gracias por aportar ideas a la causa, pero tengo dudas sobre la libreria funcky..

1.- Es una libreria de terceros pagada..?

2.- En donde puedo adquirirla..?

He buscao en la red pero no la encuentro..

Abrazos..
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby sysctrl2 » Tue Jul 24, 2007 12:57 am

es de pago,

aqui hay informacion,

http://www.abox.com/productos.asp?pid=295


saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1027
Joined: Mon Feb 05, 2007 7:15 pm

Postby cuatecatl82 » Tue Jul 24, 2007 2:14 pm

Gracias por su respuesta:

He Revisado la pagina y no es nada barata la lib. ( :x Aprox. $4000.00 Mex.),
creo que seguiré con mi proyecto de escribir alguna función para toda la comunidad que la necesite..

Saludos..
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby R.F. » Tue Jul 24, 2007 3:19 pm

Efectivamente, no es barata, pero las mas de 2,000 funciones que tiene y que hacen practicamente de todo (correo con autenticacion, FTP, scaneo de red, operaciones con bits, etc etc etc) ademas se pueden usar no solo con Fivewin sino con xHarbour en modo consola o bien con cual otra GUI.
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby Antonio Linares » Wed Jul 25, 2007 10:52 am

FWH usa la función SetSystemTime() del API de Win32 desde la función SetDate(). Esta es la documentación de SetSystemTime():

The SetSystemTime function sets the current system time and date. The system time is expressed in Coordinated Universal Time (UTC).

BOOL SetSystemTime(

CONST SYSTEMTIME *lpSystemTime // address of system time to set
);

Parameters
lpSystemTime

Points to a SYSTEMTIME structure that contains the current system date and time.
The wDayOfWeek member of the SYSTEMTIME structure is ignored.

Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError
.

Remarks
Windows NT: The SetSystemTime function fails if the calling process does not have the SE_SYSTEMTIME_NAME privilege. This privilege is disabled by default. Use the AdjustTokenPrivileges function to enable this privilege and again to disable it after the time has been set. For more information about security privileges, see Privileges.
Windows 95: Security privileges are not supported or required.

See Also
AdjustTokenPrivileges, GetSystemTime, SetSystemTimeAdjustment, SYSTEMTIME, SystemTimeToTzSpecificLocalTime
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42151
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 29 guests

cron