 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
masc Invitado
|
Publicado: Sab 05 Oct, 2002 9:13 am Asunto: problemas en escritura y lectura de ficheros binarios |
|
|
bueno, a ver si alguien me puede ayudar.
mi aplicacion requiere escribir en el principio de un fichero su nombre, y despues escribir su contenido; y despues recuperar su nombre, y poder leer su contenido. es crear un especie de formato muy simple para un fichero. para hacer esto hace falta crear el fichero en modo binario. despues escribo el nombre del fichero:
char* nombre = new char[fich.Length() + 1]; //fich es un AnsiString
//con el nombre del fichero
strcpy(nombre, (ExtractFileName(fich)).c_str());
if((w = write(idfich, nombre, 255)) == -1)
{
close(idfich);
return;
}
y despues copio el contenido del fichero, de modo que vaya depues del nombre.
para recuperar el nombre, abro el fichero en modo binario y leo solo el principio del fichero:
char* nombre = new char[255];
void* mn = malloc(sizeof(char) * 255);
if(mn == NULL)
{
close(idfich);
Application->Terminate();
}
if(read(idfich,mn,(sizeof(char) * 255)) == -1)
{
close(idfich);
return;
}
nombre = static_cast<char*>(mn);
el problema esta en que la mayoria de las veces no recupera el nombre completo:
por ejemplo, si el nombre del fichero es pepito.zip , recupera pepito.zi| con esa barra |
¿donde esta el problema? ¿alguien me puede ayudar? gracias. |
|
| Volver arriba |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Jue 10 Oct, 2002 12:43 pm Asunto: |
|
|
HOLA:
Creo que tu problema esta en lo que grabas.
strcpy introduce una serie de caracteres sobre el string, pero respeta el resto de los caracteres, asi que en realidad tu variable nombre del fichero esta grabando nombre_fichero + basura, que es lo que luego recupera.
Prueba esto
char* nombre = new char[fich.Length() + 1]; //fich es un AnsiString
//con el nombre del fichero
memset(nombre,'\x0',sizeof(nombre));
strcpy(nombre, (ExtractFileName(fich)).c_str());
By. |
|
| Volver arriba |
|
 |
masc Invitado
|
Publicado: Vie 11 Oct, 2002 6:36 pm Asunto: |
|
|
| muchas gracias TOÑO, he puesto lo que me has dicho, y la verdad es que ahora funciona perfectamente. gracias por tu ayuda. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|