Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 23
socger Va por buen camino
Sigo teniendo el mismo problema, estoy desistiendo

Sigo teniendo el mismo problema. Ya casi me siento inutil, pues aunque he controlado todo lo que me habeis dicho que estudiase. Me he topado con este ultimo problema y sigo sin resolverlo. Por lo que se deduce que si no pillo un golpe de ayuda voy a tener que abandonar este proyecto..

Saludos de todos modos
Responder Con Cita
  #2  
Antiguo 11-06-2007
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
socger, pero exactamente ¿qué valores existen en esa posición en el fichero a leer, qué resultado deberías obtener y qué resultado obtienes?


p.d.: no te rindas, muchas veces es mejor apartarse un rato del problema, dedicarse a descansar o algún hobby y luego volver con más energías para enfrentarse al problema.
Responder Con Cita
  #3  
Antiguo 12-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Encontrarse en esta situación es muy típico de nosotros (los programadores) socger. El consejo de Casimiro es muy bueno.

Casimiro, el valor que se obtiene en algunos casos era negativo, y en otros, se obtiene una fecha muy cerca de 1900. Con el comentario de sítrico, todo queda mucho más claro: el integer llega hasta un valor de 0..2^16-1 cuando encuentra un valor más grande en el archivo, el tipo integer devuelve un número negativo (interpretando erróneamente el valor guardado. Por ello debe usarse el LongWord.

Por otra parte, creo haber leído en el pdf, que la fecha en la que se basa es 1970, es decir, ese número guardado, son los días transcurridos desde 1/01/1970 (lo digo de memoria, favor de mirar el pdf para comprobarlo) y como sabemos, el calendario del ordenador se basa en 1900, por tanto, a ese número obtenido habría que sumarle 70 años para obtener el valor correcto. Yo, aunque lo intenté, tampoco obtuve los resultados esperados, muy probablemente porque usaba un Integer en lugar del LongWord o Cardinal.

Son muchos detalles los que hay que tener en cuenta

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 12-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Pues con esas modificaciones tampoco va

Cita:
Empezado por socger
En Fecha primer día de validez de la tarjeta: 09-09-2006
y en Fecha en la que termina la validez de la tarjeta: 09-09-2011
Pues no da, jejeje, me da fechas entorno al 1970 y el año 2038
Incluso miré sin sumar el 1970 ... a ver si daba fechas mejores... pero nop

(Veasé la rutina devolver_fecha)

He añadido un par de lineas de debug:
"Fecha sumando 1970" y "Fecha partiendo de 1900". Lo hice porque ya dudaba que la fecha base de un TTime_Real fuese el 01/01/1970

Estos son los datos que obtengo para el conductor diego Antonio:
Código:
                                   Segundos leidos de archivo 2150951235
                                   Valor en dias obtenido: 24.895,27 (unos 68 años más o menos)
                                    Fecha sumando el 1970: 28/02/2038 06:27:15 
                                    Fecha partiendo de 1900: 27/02/1968 06:27:15 
*** Fecha en que se expidió la tarjeta: 28/02/2038 06:27:15 


                                   Segundos leidos de archivo 14935875
                                   Valor en dias obtenido: 172,87
                                    Fecha sumando el 1970: 22/06/1970 20:51:15 
                                    Fecha partiendo de 1900: 20/06/1900 20:51:15 
*** Fecha primer día de validez de la tarjeta: 22/06/1970 20:51:15


                                   Segundos leidos de archivo 3559245
                                   Valor en dias obtenido: 41,19
                                    Fecha sumando el 1970: 11/02/1970 04:40:45 
                                    Fecha partiendo de 1900: 09/02/1900 04:40:45 
*** Fecha en la que termina la validez de la tarjeta: 11/02/1970 04:40:45
*** Apellidos/nombre titular de la tarjeta: MIÑANO MORENO, DIEGO ANTONIO
O sea:
- La tarjeta se expidió hace 68 años más o menos desde la fecha base
- Fecha primer día de validez: 172 días más o menos desde la fecha base
- Fecha termina la validez: 41 dias desde la fecha base

Causas de que eso no vaya bien:
- Estamos olvidando un detalle del famoso pdf
- No está leyendo bien del archivo (aunque no da errores de lectura, puede que esté interpretando datos que no deberían leerse así).
- Las fechas no parten desde el 1970, sino de otra fecha. (esto es improbable, ya que lo dice expresamente el pdf, salvo error tipográfico ).

- He modificado las líneas ReadBuffer, ya que ponías a mano el número de bytes a leer, yo he puesto sizeof(Tipo_de_registro).
- También he modificado la rutina devolver_fechas.

... pero seguimos igual que antes .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 10-10-2007 a las 20:56:21.
Responder Con Cita
  #5  
Antiguo 13-06-2007
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Basándome en el programita de Lepe, he hecho algunas pruebas y desde luego que si es desde 1970, no cuadran las fechas.
¿Puede ser que no se estén leyendo los datos correctos?, casi seguro que es eso.

No he revisado la parte que lee el fichero, he supuesto que está leyendo los bytes correctos.

Última edición por Casimiro Noteví fecha: 13-06-2007 a las 00:54:42.
Responder Con Cita
  #6  
Antiguo 13-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Yo si hice 1 sola traza de la rutina de lectura; lo hace bien.

Lo que fastidia bastante, es que el resto de datos de ese registro TCard_Identification lo devuelve correctamtente.
Código:
       card_Issuing_Member_State:   Byte;                   // NationNumeric, ...  1 byte INTEGER(0..255) por defecto (00) ver apdo 2.72. NationNumeric
        card_Number:                 TCard_Number_Conductor; // CardNumber     ... 16 byte por defecto (20..20) ver apdo. 2.21 CardNumber
        card_Issuing_Authority_Name: TName;                  // Name,          ... 36 byte por defecto (20..20) ver apdo. 2.70 Name
        card_Issue_Date:             TTime_Real;             // TimeReal       ...  4 byte por defecto (00..00) ver apd. 2.110 TimeReal
        card_Validity_Begin:         TTime_Real;             // TimeReal       ...  4 byte por defecto (00..00) ver apd. 2.110 TimeReal
        card_Expiry_Date:            TTime_Real;
Si el Card_Number es el correcto (porque no hay duda, se ve en el Memo1 y también en el GroupBox.Caption), entonces el resto de datos deben ser correctos.

Si hubiese un byte de desplazamiento erróneo (porque estuviese leyendo mal del archivo), ese fallo se propagaría, y faltaría o sobraría una letra a ese Card_Number, y lo mismo con el card_Issuing_Authority_Name.

Pero no, los datos son correctos, aparece la "DGT DE MURCIA" y el nombre y apellidos del conductor perfectamente, sin falta ni sobra de letras.

Llegados a este punto, diría que falla la función Devolver_Fecha, es decir, la traducción que hace de ese número no es la correcta.

Lo más fácil es decir que el pdf tiene un error, o que incluso se ha modificado posteriormente las normas, y que ese pdf no lo contempla.

Yo aconsejo dejar eso de lado y tirar hacia delante, posiblemente al final se encuentre como resolver el inconveniente. Socger, ¡¡ ánimo !!

Por curiosidad, conté los días entre 01/01/1970 y la fecha de hoy, me daba 13.677,72. La primera fecha da sobre unos
Cita:
- La tarjeta se expidió hace 24.895,27 días (esto daba el año 2038)
- Fecha primer día de validez: 172 días
- Fecha termina la validez: 41 dias
Queda claro que la primera fecha no es desde 1970, tampoco desde 1900.
Queda claro que la segunda y tercera fecha, está en base a esa fecha que desconocemos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 13-06-2007 a las 18:21:06.
Responder Con Cita
  #7  
Antiguo 13-06-2007
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Sí, puede ser que la documentación tenga una errata en la fecha o que la hayan cambiado.
Sería conveniente localizar el organismo encargado de emitir esas normas y conseguir la última que tengan actualizada.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Huellas Digitales Viky Varios 6 17-01-2007 18:38:18
Atacar el ToolBarWindows32 mangi API de Windows 0 28-04-2006 13:07:58
Atacar cartografías tipo Map Point o NafTec socger Varios 3 23-12-2005 10:04:09
¿Con .Net que bases de datos puedo atacar y como??? burasu .NET 4 17-09-2005 12:16:05
Atacar tablas Paradox con ADO. Chojj Conexión con bases de datos 2 02-07-2003 20:50:12


La franja horaria es GMT +2. Ahora son las 21:45:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi