![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Pues con esas modificaciones tampoco va
![]() Cita:
![]() 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
- 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. |
|
#2
|
||||
|
||||
|
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Noteví fecha: 13-06-2007 a las 00:54:42. |
|
#3
|
||||
|
||||
|
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 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:
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. |
|
#4
|
||||
|
||||
|
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
Por lo visto el dato está bien, he encontrado información en sitios oficiales y parece correcto.
Entonces, me pregunto, ¿puede ser que lo que esté mal sea el fichero que se está importando?, ¿de dónde han salido esos ficheritos de pruebas?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#6
|
|||
|
|||
|
Los ficheros son recogidos de tarjetas de conductores
Estos ficheros están recogidos de las tarjetas de algunos de los conductores de la empresa de transportes para la que trabajo.
Puedo subir más para que los probeis. Y de momento con todos los que he probado me ha ocurrido lo mismo. Gracias de todos modos. Seguiré haciendo pruebas, pero os agradecería que me pudieseis hechar un cable. Cualquier idea por la que pueda caminar me podría solucionar este problema. Saludos. |
|
#7
|
||||
|
||||
|
los conductores que tenemos son:
- diego antonio - juan jose - manuel riquelme. Sería bueno saber de antemano la fecha de expedición de su tarjeta, primer dia de validez y fecha en la que termina la validez (Al menos algunas de ellas) a ver si calculando los segundos de esas fechas, se puede obtener el número que viene en el fichero). Este fin de semana salgo de viaje, así que no podré echarle un vistazo. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#8
|
|||
|
|||
|
sobre fechas
con los problemas de fechas yo de duzco que:
tienes posibilidad de ver las tarjetas fisicamente No? pues puedes saber la fecha de validez. si no esta impreso en la tarjeta, puedes saber el plazo sabiendo cuando se izo la tarjeta. No? apartir de ahi teniendo lo que obtienes en el fichero tgd se podria saber desde cuando se empieza.(pero provando varias tarjetas). No se si te servira o sera una tonteria. sobre los ficheros tgd es muy interesante(quien no tiene un amigo camionero y que quiera ver el fichero. ya que es suyo!sin pagar una pasta) si puedo le echare un ojo al codigo tuyo. saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|