![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#24
|
|||
|
|||
|
Chicos tengo otro fallo
Os paso dos ficheros para probarme este error de interpretación (Lector tacógrafos.rar y Fichero_Tarjeta_Digital_Conductor.rar)
Bien me ocurre este problema, existe un tipo de datos según el BOE que conseguí gracias a vosotros que son del tipo time real de hecho esto es lo que dice el BOE: -------------------------------------------------------------------------------------------------- 2.110. TimeReal Código para un campo combinado de fecha y hora, donde ambos parámetros se expresan como los segundos transcurridos desde las 00h.00m.00s. del 1 de enero de 1970, tiempo medio de Greenwich. TimeReal{INTEGER:TimeRealRange} ::= INTEGER(0..TimeRealRange) Asignación de valor . Alineación de octeto: número de segundos transcurridos a partir de la medianoche del día 1 de enero de 1970, tiempo medio de Greenwich. La fecha/hora máxima posible es en el año 2106. Definición de valores variables empleados en las definiciones del apartado 2. TimeRealRange ::= 232-1 -------------------------------------------------------------------------------------------------- Para calcular la fecha que devuelve una variable del tipo he creado primero la clase tTime_Real: -------------------------------------------------------------------------------------------------- TTime_Real = packed record // 4 byte ver apdo. 2.110. TimeReal Time_Real: Integer; // [INTEGER:TimeRealRange] ::= INTEGER(0..TimeRealRange) ... TimeRealRange ::= 2^32-1 end; -------------------------------------------------------------------------------------------------- Y segundo la función Devolver_Fecha: -------------------------------------------------------------------------------------------------- function TForm1.Devolver_Fecha(Fecha_Integer: Integer): String; var Cantidad_Dias_Transcurridos: Extended; Cantidad_Resto_Horas: Extended; Cantidad_Resto_Minutos: Extended; Cantidad_Resto_Segundos: Extended; Resto_Que_Queda_de_Segundos: Extended; Dia_A_Devolver: tDate; Mensaje: String; begin // Un día = 60 segundos * 60 minutos * 24 horas = 86400 segundos // Una hora = 60 segundos * 60 minutos = 3600 segundos // Una minuto = 60 segundos = 60 segundos Resto_Que_Queda_de_Segundos := Fecha_Integer; Mensaje := 'Total segundos: ' + FloatToStr(Resto_Que_Queda_de_Segundos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + ' ' + chr(10) + chr(13); Cantidad_Dias_Transcurridos := Abs(Int(Resto_Que_Queda_de_Segundos / 86400)); Resto_Que_Queda_de_Segundos := Resto_Que_Queda_de_Segundos - (Cantidad_Dias_Transcurridos * 86400); Mensaje := Trim(Mensaje) + 'Total días transcurridos: ' + FloatToStr(Cantidad_Dias_Transcurridos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + 'Resto de segundos: ' + FloatToStr(Resto_Que_Queda_de_Segundos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + ' ' + chr(10) + chr(13); Cantidad_Resto_Horas := Abs(Int(Resto_Que_Queda_de_Segundos / 3600)); Resto_Que_Queda_de_Segundos := Resto_Que_Queda_de_Segundos - (Cantidad_Resto_Horas * 3600); Mensaje := Trim(Mensaje) + 'Resto de horas transcurridas: ' + FloatToStr(Cantidad_Resto_Horas) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + 'Resto de segundos: ' + FloatToStr(Resto_Que_Queda_de_Segundos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + ' ' + chr(10) + chr(13); Cantidad_Resto_Minutos := Abs(Int(Resto_Que_Queda_de_Segundos / 60)); Resto_Que_Queda_de_Segundos := Resto_Que_Queda_de_Segundos - (Cantidad_Resto_Minutos * 60); Mensaje := Trim(Mensaje) + 'Resto de minutos transcurridas: ' + FloatToStr(Cantidad_Resto_Minutos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + 'Resto de segundos: ' + FloatToStr(Resto_Que_Queda_de_Segundos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + ' ' + chr(10) + chr(13); Cantidad_Resto_Segundos := Resto_Que_Queda_de_Segundos; Mensaje := Trim(Mensaje) + 'Resto de segundos transcurridas: ' + FloatToStr(Cantidad_Resto_Segundos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + 'Resto de segundos: ' + FloatToStr(Resto_Que_Queda_de_Segundos) + chr(10) + chr(13); Mensaje := Trim(Mensaje) + ' ' + chr(10) + chr(13); Dia_A_Devolver := StrToDate('01/01/1970') + Cantidad_Dias_Transcurridos; Mensaje := Trim(Mensaje) + 'Dia a devolver: ' + DateToStr(Dia_A_Devolver) + chr(10) + chr(13); MessageDlg( Mensaje, mtInformation, [mbOk], 0 ); Result := Trim( DateToStr(Dia_A_Devolver) + ' ' + Trim(FloatToStr(Cantidad_Resto_Horas)) + ':' + Trim(FloatToStr(Cantidad_Resto_Minutos)) + ':' + Trim(FloatToStr(Cantidad_Resto_Segundos)) ); end; -------------------------------------------------------------------------------------------------- El ejemplo que os paso me debería de haber devuelto sobre el tipo de FID = 0520 ... EF Identification (CardIdentification + DriverCardHolderIdentification) 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 Estos datos los cargo en la clase TCard_Identification sobre card_Validity_Begin y card_Expiry_Date respectívamente -------------------------------------------------------------------------------------------------- TCard_Identification = packed record // 65 byte ... ver apdo. BOE 2.20. CardIdentification 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; // TimeReal ... 4 byte por defecto (00..00) ver apd. 2.110 TimeReal end; -------------------------------------------------------------------------------------------------- Pero como comprobareis con el ejemplo no me devuelve bien los valores de fecha, creo que puede ser o que no he entendido bien que tipo de datos son los TimeReal o que se me escapa algo en la función. Por si os hacen falta os envío en el fichero Otros_Ficheros_Conductores.rar más capturas de conductores. Os agradecería me guiaseis ante esta duda. Como veréis en el código que subo voy bastante avanzado gracias a vuestra ayuda. De antemano, os doy las gracias por vuestra colaboración. |
|
|
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 |
|