Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #14  
Antiguo 16-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
En un primer análisis, podemos separar el archivo en lo que, según la documentación que enlazo Casimiro, se denominan "Archivos elementales". Estos están formados por una "cabecera" y un bloque de datos.

Algo así (es una aplicación de consola):
Código Delphi [-]
program Tacografo;

{$APPTYPE CONSOLE}

uses
  Windows, Sysutils, Classes;

type
  TCabecera = packed record
    FID: Word;
    Tipo: Byte;
    Longitud: Word;
  end;

function FIDToStr(FID: Word): String;
begin
  case FID of
    $0002: Result:=  'ICC';
    $0005: Result:=  'IC';
    $0500: Result:=  'Application identification';
    $C100: Result:=  'Card certificate';
    $C108: Result:=  'CA certificate';
    $0520: Result:=  'Identification';
    $050E: Result:=  'Card download';
    $0521: Result:=  'Driving license info';
    $0502: Result:=  'Events data';
    $0503: Result:=  'Faults data';
    $0504: Result:=  'Driver activity data';
    $0505: Result:=  'Vehicles uses';
    $0506: Result:=  'Places';
    $0507: Result:=  'Currents usage';
    $0508: Result:=  'Control activity data';
    $0522: Result:=  'Specific conditions';
    else
      Result:= 'Identificador desconocido';
  end;
end;

var
  Cabecera: TCabecera;
  Datos: PByte;
begin
  if ParamCount > 0 then
  try
    with TFileStream.Create(ParamStr(1),fmOpenRead or fmShareDenyWrite) do
    try
      Writeln('Analizando el fichero: ' + ParamStr(1));
      GetMem(Datos,$FFFF);
      try
        while Read(Cabecera,Sizeof(Cabecera)) = Sizeof(Cabecera) do
        begin
          Cabecera.FID:= Swap(Cabecera.FID);
          Cabecera.Longitud:= Swap(Cabecera.Longitud);
          Writeln;
          Writeln('FID: ' + IntToHex(Cabecera.FID,4));
          Writeln('Descripcion: ' + FIDToStr(Cabecera.FID));
          Writeln('Longitud: ' + IntToStr(Cabecera.Longitud) + ' Bytes');
          FillChar(Datos^,$FFFF,#0);
          ReadBuffer(Datos^,Cabecera.Longitud);
        end;
      finally
        FreeMem(Datos);
      end;
    finally
      Free;
    end;
  except
    On E: Exception do
      Writeln('Error: ' + E.Message);
  end else
    Writeln('Uso: ' + ParamStr(0) + ' < archivo >');
end.

El resultado de procesar el archivo de ejemplo:
Código:
FID: 0002
Descripcion: ICC
Longitud: 25 Bytes

FID: 0005
Descripcion: IC
Longitud: 8 Bytes

FID: 0501
Descripcion: Identificador desconocido
Longitud: 10 Bytes

FID: 0501
Descripcion: Identificador desconocido
Longitud: 128 Bytes

FID: 0520
Descripcion: Identification
Longitud: 143 Bytes

FID: 0520
Descripcion: Identification
Longitud: 128 Bytes

FID: 0502
Descripcion: Events data
Longitud: 1728 Bytes

FID: 0502
Descripcion: Events data
Longitud: 128 Bytes

FID: 0503
Descripcion: Faults data
Longitud: 1152 Bytes

FID: 0503
Descripcion: Faults data
Longitud: 128 Bytes

FID: 0504
Descripcion: Driver activity data
Longitud: 13780 Bytes

FID: 0504
Descripcion: Driver activity data
Longitud: 128 Bytes

FID: 0505
Descripcion: Vehicles uses
Longitud: 6202 Bytes

FID: 0505
Descripcion: Vehicles uses
Longitud: 128 Bytes

FID: 0506
Descripcion: Places
Longitud: 1121 Bytes

FID: 0506
Descripcion: Places
Longitud: 128 Bytes

FID: 0508
Descripcion: Control activity data
Longitud: 46 Bytes

FID: 0508
Descripcion: Control activity data
Longitud: 128 Bytes

FID: 0522
Descripcion: Specific conditions
Longitud: 280 Bytes

FID: 0522
Descripcion: Specific conditions
Longitud: 128 Bytes

FID: C100
Descripcion: Card certificate
Longitud: 194 Bytes

FID: C108
Descripcion: CA certificate
Longitud: 194 Bytes
Ahora lo que necesitaríamos es saber la estructura de cada uno de esos bloques de datos.

Última edición por seoane fecha: 16-05-2007 a las 17:42:39.
Responder Con Cita
 



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 13:43:01.


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