Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Atacar ficheros TACOGRAFOS DIGITALES

Estoy empeñado en leer / interpretar los datos que devuelven los tacógrafos digitales de los vehículos, su extensión es '.TGD'. Pero no encuentro ninguna documentación del formato de estos ficheros, ni de como atacarlos para conocer su contenido.

Estaría muy agradecido si alguien me pudiera orientar.

Si sirve de algo, estoy interesado en los tacógrafos digitales españoles.

Saludos
Responder Con Cita
  #2  
Antiguo 11-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que en este documento tienes la información que necesitas.
Aunque debes saber que:
Cita:
La información contenida en los ficheros TGD viene acompañada de una firma electrónica generada por un certificado digital, el cual tiene tres propósitos:
  1. Detectar la alteración del contenido del fichero.
  2. Cifrar parte/toda la información contenida en el fichero.
  3. Verificar la identidad del equipo (tacógrafo o tarjeta) que ha registrado esta información.
Según informan aquí.
Más información aquí.
Aquí también, muy completo con el formato del fichero t ambién.

Espero que te sirva.
Responder Con Cita
  #3  
Antiguo 14-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Gracias Casimiro

Toda esta documentación es amplia pero no clara, todavía estoy perdido.

Soy el típico programador que necesita que alguien le documente mejor los datos como por ejemplo abrir el fichero usa este componente, el registro es el siguiente y se divide de la siguiente manera en los estos campos. En fin este es el problema que tengo.

Gracias de todos modos. Pero necesitaría algo más documentado. Porque todavía estoy pillado

Os agradecería que me condujerais a un sitio o algun compañero que estuviese ya desarrollando algo sobre tacógrafos digitales para ver como nos podemos ayudar.

Agradezco de antemano toda ayuda y me pongo a disposición de quien me necesite para este desarrollo.

De todo lo que vaya encontrando sobre este hilo lo pondré documentado con el transcurso del tiempo aquí y sólo por su puesto si me lo permiten sus moderadores.

Gracias.
Responder Con Cita
  #4  
Antiguo 14-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pa'mí que no has leido el capitulo 2, artículo 24 en adelante del último enlace de casimiro jomio

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 14-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepe
Pa'mí que no has leido el capitulo 2, artículo 24 en adelante del último enlace de casimiro jomio

Saludos
No lo quería decir, pero, sí, tienes razón Lepe, creo que no lo ha leído
Responder Con Cita
  #6  
Antiguo 14-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
... y no le culpo, nada más entrar en una web del estilo BOE, yo al menos, salgo pitando .

Hice un Scroll vertical rápido y, por suerte, ví las "tablitas"... me paré un segundo y vi "extensión del archivo: TGD"... ahhh amigo

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: 14-05-2007 a las 18:13:22.
Responder Con Cita
  #7  
Antiguo 15-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Gracias por abrirme los ojos

Es de agradeceros que me hayais abierto los ojos sobre la información de este BOE.

Aún sigo teniendo dudas sobre como abrir estos ficheros, los voy a abrir como si fueran ficheros de texto, byte a byte, a ver si así y viendo sus datos puedo interpretar esta información.

Igual iré desarrollando el código y lo iré subiendo aquí, para ver si a alguien más le interesa desarrollar algo sobre este tema.

Espero no os importe si os vuelvo a pedir ayuda.

Saludos.-
Responder Con Cita
  #8  
Antiguo 15-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por socger
[..] Espero no os importe si os vuelvo a pedir ayuda. Saludos.-
Por favor, al contrario, estaremos encantados de resolver todas las dudas que tengas, ojalá podamos
Responder Con Cita
  #9  
Antiguo 15-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Lo he intengado pero no traga .. ¿podeis hecharme un cable?

No se en donde fallo, y lo he intentado.

He cogido la estructura del fichero de conductores que me pasastes Casimiro ... esta:

a) Datos de la tarjeta de conductor:
Todos los archivos elementales de la tarjeta que se transfieren en una sesión de descarga deben almacenarse en un único fichero.
Cada fichero contendrá un conjunto de registros lógicos,
que se corresponderán con archivos elementales de la tarjeta y que tendrán la siguiente estructura de campos:

Nombre
Longitud
(bytes)

Significado o valor
FID
Tipo
Longitud
Datos
2
1
2
[Longitud]
Identificador del archivo elemental
‘00’ (archivo elemental)
‘01’ (firma de archivo elemental)
Tamaño del archivo elemental
Contenido del archivo elemental

Los ficheros de datos deberán contener los siguientes archivos elementales:
Archivo
FID
Descripción
ICC
0002
Identificación física de la tarjeta.IC
0005
Identificación del chip.Application _identification
0500
Versión, tamaño de los registros internos,….Card_Certificate
C100
Certificado de la tarjeta.CA_Certificate
C108
Certificado de la CIA.Identification
0520
Número, CIA, fecha de validez,….Card_Download
050E
Fecha y hora de la última transferencia de datos de la tarjeta.Driving_license_info
0521
Número, país de expedición, fecha de validez,….Events_data
0502
Registro de incidentes.Faults_data
0503
Registro de fallos.Driver_Activity_data
0504
Actividad del conductor.Vehicles_Used
0505
Vehículos utilizados.Places
0506
Lugares donde comienza o termina un periodo de trabajo diario.Current_Usage
0507
Fecha, hora y vehículo en que se abrió la sesión.Control_Activity_Data0508 Actividades de control sobre la tarjeta.Specific_Conditions
0522
Fuera de ámbito, transbordador,….

Y con estos ejemplos que os paso en el fichero 'ficheros tarjeta conductores.zip'

pero no consigo que por ejemplo me diga el número de tarjeta a la que pertenece.

En el ejemplo que os paso para leer estos ficheros, podreis ver que tengo que convertir los bytes que voy recogiendo a HEX pero aun así no veo la manera de seguir. Aparentemente el primer registro que cargo me dice para FID 0002 entre los dos bytes que recupero para tipo cargo 00 para longitud cargo 19, pero después el número de tarjeta no me lo devuelve bien no coincide con el que debería de poner que es el del nombre del fichero.

En fin os envío también el código realizado para su lectura, si me podeis decir en que fallo os lo agradecería pues me estoy dando cabezazos contra algo que no llego a más. Saludos
Archivos Adjuntos
Tipo de Archivo: zip ficheros tarjeta conductores.zip (10,1 KB, 230 visitas)
Tipo de Archivo: zip Lector tacógrafos.zip (6,4 KB, 216 visitas)

Última edición por socger fecha: 15-05-2007 a las 14:24:08.
Responder Con Cita
  #10  
Antiguo 15-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿de donde has sacado ese archivo tgd?

Ese, es un archivo binario (basta abrirlo con el bloc de notas para ver "caracteres extraños").

Siendo binario, no puedes usar TextFile para leerlo, más bien debes usar un file of record.

El problema, es saber el tamaño de las cosas, cuando dice que un campo ocupa 2 bytes... vete a saber si son dos caracteres (letras) o un tipo integer. Para ello tienes que ir al fichero tgd, (abrirlo con el bloc de notas) y más o menos ver que guarda.

Creo que sería así:
Código Delphi [-]

type Tconductores = record
  Fid : char[2];
  Tipo :char;
  Longitud: integer; // suele ser lo normal
  Datos :integer // 
 end;

var FConductores : File of TConductores;
mira la ayuda en delphi "File Types" para ver un ejemplo de como leer y escribir en ellos.

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 15-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
También hay que tener en cuenta que puede que sea texto, pero cifrado, porque:
Cita:
La información contenida en los ficheros TGD viene acompañada de una firma electrónica generada por un certificado digital, el cual tiene tres propósitos:
  1. Detectar la alteración del contenido del fichero.
  2. Cifrar parte/toda la información contenida en el fichero.
  3. Verificar la identidad del equipo (tacógrafo o tarjeta) que ha registrado esta información.
Responder Con Cita
  #12  
Antiguo 16-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Ayuda para la firma digital

Estuve probando la manera de abrir los ficheros recomendado por nuestro amigo lepe y resulta que seguimos teniendo el mismo problema que con el ejemplo anterior que os pasé.

Creo que Casimiro lleva toda la razón cuando nos dijo que eran ficheros posíblemente cifrados/encriptados con la firma digital.

_______________________________________________________________________

Cita de Casimiro:

También hay que tener en cuenta que puede que sea texto, pero cifrado, porque:


La información contenida en los ficheros TGD viene acompañada de una firma electrónica generada por un certificado digital, el cual tiene tres propósitos:
  1. Detectar la alteración del contenido del fichero.
  2. Cifrar parte/toda la información contenida en el fichero.
  3. Verificar la identidad del equipo (tacógrafo o tarjeta) que ha registrado esta información.
_______________________________________________________________________

Por eso os pediría consejo sobre como poder seguir sobre esa línea, ¿dónde creeis que debería documentarme?, o con quién debería de ponerme en contacto. Es decir, ¿podríais a un ciego guiarle en su andar?, perdón yo soy el ciego.

Saludos y muchas gracias por adelantado.
Responder Con Cita
  #13  
Antiguo 16-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
De todas formas, el ficherito que has puesto de muestra parece que no está cifrado, se puede leer nombres y otros datos, así que en este caso es simplemente un archivo binario con una estructura que hay que conocer.
Bueno, eso es lo que parece.
Responder Con Cita
  #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: 24
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
  #15  
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: 24
seoane Va por buen camino
Investigando un poco mas encontré esta pagina donde te puedes descargar un pdf con la estructura de cada uno de esos bloques de los que hablaba.

http://www.boe.es/g/es/bases_datos/d.../81422&codmap=

Son mas de 200 paginas, así que me parece que yo lo dejo aquí.
Responder Con Cita
  #16  
Antiguo 18-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Gracias seoane ... pero tengo esta duda

No he usado nunca este tipo de ficheros, lo cual es un problema para mí. Podrías documentarme ... alguna ayuda o link ... donde pueda ver como se trabajan con los ficheros de este tipo

---
cita tuya:

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

---

Y aún documentándome he visto que estos ficheros elementales que vienen ahora dependen o se crean con la longitud que se consiga en el campo Longitud de tipo Word que creastes, es decir que cambian su longitud debido al campo Longitud.

¿Serías tan amable de por lo menos decirme como crearlo en TCabecera?

No se como ayudarte, en la medida que yo pudiera, pero te garantizo que esta ayuda que me prestas me va a hechar un buen cable. De todos modos me presto para lo que hiciera falta.

Saludos

Última edición por socger fecha: 18-05-2007 a las 09:56:45.
Responder Con Cita
  #17  
Antiguo 18-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Perdón. Es un fallo

Perdón es un fallo.

Gracias a todos por la ayuda. No se por donde habría tirado sin vuestra ayuda, la de todos.

Ya voy encontrando cielos abiertos gracias a vosotros.

Pero como he comentado en la anterior consulta sigo con problemas. No conozco los ficheros de este tipo. Podríais ver la nota anterior y comentarme que hacer.

Gracias
Responder Con Cita
  #18  
Antiguo 18-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: 24
seoane Va por buen camino
Cita:
Empezado por socger
Pero como he comentado en la anterior consulta sigo con problemas. No conozco los ficheros de este tipo. Podríais ver la nota anterior y comentarme que hacer.
No entiendo tu pregunta. En mi código no utilizo ficheros con tipo, no tendría mucho sentido, ya que los registros tienen un tamaño variable. Lo que si sabemos es que cada "elemento" del fichero tiene el mismo encabezado, y si que tenemos el tamaño de ese encabezado.

Así que lo que hago es leer el encabezado, determinar el tamaño de los datos y leerlos. Si te fijas en la siguiente instrucción:
Código Delphi [-]
  ReadBuffer(Datos^,Cabecera.Longitud);
Leemos en el buffer "Datos", el contenido de ese bloque. Una vez en memoria, ya veras tu lo que tienes que hacer con el. En el enlace que te di, parece que explican la estructura de cada uno de estos bloques, pero sus mas de 200 paginas me desaniman bastante a leerlo.

Si me permites un consejo, creo que, si no estas familiarizado con el tratamiento de ficheros y el de estructuras en memoria, el proyecto puede que te resulte demasiado complicado. La parte que yo puse es lo mas básico, luego viene interpretar cada bloque, y ya no hablemos de la parte de cifrado ....
Responder Con Cita
  #19  
Antiguo 18-05-2007
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Gracias SEONAME

Sobre tu cita:

--------------------------------------------------------------------
Si me permites un consejo, creo que, si no estas familiarizado con el tratamiento de ficheros y el de estructuras en memoria, el proyecto puede que te resulte demasiado complicado. La parte que yo puse es lo mas básico, luego viene interpretar cada bloque, y ya no hablemos de la parte de cifrado ....
---------------------------------------------------------------------

Si es cierto no estoy familiarizado con esta estructura de ficheros que usas fileStream ni con estructuras en memoria (aunque aprendo rápido), por eso te pedí algun link o documento que me familiarizase sobre esta estructura de datos. Y bueno por eso te seguiría pidiendo que me documentases el paso a seguir para aprender más sobre todo esto.

En cuanto al cifrado de datos este boe que me pasastes, a poco que estoy viendo, es bastante extenso y poco documentativo. Pero espero que superando la primera parte que te comenté antes me pase rápidamente a la siguiente.

Chaval, muchas gracias de todos modos y lo dicho me teneis para lo que os haga falta en este foro. De momento voy a seguir subiendo todo lo que vaya descubriendo sobre este tema.

Saludos, pero antes agradezco toda ayuda suministrada.
Responder Con Cita
  #20  
Antiguo 18-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: 24
seoane Va por buen camino
Cita:
Empezado por socger
Si es cierto no estoy familiarizado con esta estructura de ficheros que usas fileStream
Ahora ya voy entendiendo. Te referías al uso de streams. Los streams se utilizan para escribir y leer datos de forma sencilla. Hay diferentes tipos de stream que permiten leer y escribir en diferentes medios: archivos, memoria, sockets, campos BLOB, etc ... pero todos ellos descienden de la clase TStream y disponen de los métodos Read y Write para leer y escribir.

Yo me he acostumbrado a utilizarlos a la hora de tratar ficheros, son bastante cómodos. Pero hubiera sido lo mismo, si utilizáramos un fichero sin tipo, los de toda la vida, y las funciones Blockread y Blockwrite para leer y escribir. Si quieres saber como funcionan los Stream, revisa la ayuda sobre la clase TFileStream.

Una explicación rápida, para empezar:
Código Delphi [-]
// Método Read de la clase TFileStream. Lee en una variable tantos bytes como
// se le indique. En este caso lee en la variable "Cabecera" tantos bytes como 
// mide la propia variable. La función devuelve el número de bytes leídos.
Read(Cabecera,Sizeof(Cabecera))

Código Delphi [-]
// La función ReadBuffer es similar a Read, solo que si no se consiguen leer
// todos los bytes que se ordenaron, se provoca una excepción.
// En este caso queremos almacenar los datos en la porción de memoria apuntada
// por el puntero "Datos". Por eso utilizamos ^ después del nombre del puntero.
ReadBuffer(Datos^,Cabecera.Longitud);

En cuanto a como analizar las diferentes estructuras, ya depende de como sean. Si tienen un tamaño fijo, a lo mejor podemos utilizar punteros. Si no, deberemos de estudiar en cada caso como hacerlo.

Como ya dije no es nada fácil, pero no quería desanimarte con mi anterior mensaje, aunque leyéndolo ahora veo que me salio un poco pesimista . Yo empezaría por familiarizarme con los ficheros (leer, escribir, etc ...) para luego entrar a interpretar los datos. En cualquier caso tienes por delante muchas horas de lectura
Responder Con Cita
Respuesta



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 00:55:12.


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