Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2012
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 20
NPIdea Va por buen camino
Leer byte a byte un fichero binario

Hola a todos.

Estoy con la lectura de un fichero binario y resulta que según en que caracteres tenga en su interior me lee más o menos caracteres y eso que con un editor hexadecimal los datos están correctamente en su sitio. Pero debe ignorar algúnos caracteres como h20 h13 y no me los lee, con lo que el array que quiero cargar, me fastidia todos los indices.

La función que uso es:
Código Delphi [-]
    i=0;
//    AnsiString RD=ExtractFilePath(Application->ExeName)+"Tablas\\R230.PGZ";
    AnsiString RD=ExtractFilePath(Application->ExeName)+"Tablas\\Prueba.PGZ";
    FILE *pf=fopen(RD.c_str(),"r");
    if (pf!=NULL)
    {
      fseek(pf, 0, 0);
      fseek(pf, 0, 0);
      fread(&RegDoc, sizeof(RegDoc), 1, pf);
      fclose(pf);
    }

Si cojo el segundo funciona bien y en el 5750 sale el dato que quiero, si uso el primero sale en el 5748.

Se me ocurre leer byte a byte el fichero, pero ese es mi problema, no se como hacerlo para meterlo luego en un array.

El array es de 8749, la misma longitud del fichero binario.

Gracias.

PD: El problema es que me descarta los bytes que estan con h0D (CR decimal 13) y no me los mete en la cadena.

Última edición por NPIdea fecha: 22-03-2012 a las 12:32:33.
Responder Con Cita
  #2  
Antiguo 22-03-2012
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 20
NPIdea Va por buen camino
Solucionado

Mira que he mirado páginas, foros, etc.

Al final estaba en la ayuda de Buider, jeje.

hay que cambiar el setmode, con lo que quedaría así:

añardir io.h y fontl.h ademas de string.h y stdio.h.

Código Delphi [-]
    AnsiString RD=ExtractFilePath(Application->ExeName)+"Archivo.ppp";
    FILE *pf=fopen(RD.c_str(),"r");
    setmode( fileno( pf ), O_BINARY );
    if (pf!=NULL)
    {
      fseek(pf, 0, 0);
      fread(&RegDoc, sizeof(RegDoc), 1, pf);
      fclose(pf);
    }

Y solucionado.
Responder Con Cita
  #3  
Antiguo 22-03-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Tambien tienes esta opción mas directa:
Código:
FILE *pf=fopen(RD.c_str(),"rb");

Saludos.
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
convertir hex a Byte Lizeth Varios 4 07-04-2011 20:23:41
File of Byte kdemia Varios 2 27-05-2010 19:21:36
Pasar string a byte Novás Varios 6 27-11-2007 20:18:38
de BYTE a STRING emeceuy Varios 3 20-08-2004 16:29:32
ADO: Byte nulo (byte #0) en un string Pandre Conexión con bases de datos 0 02-04-2004 20:18:37


La franja horaria es GMT +2. Ahora son las 04:13:55.


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