Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Como borrar linea en un fichero

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Como borrar linea en un fichero Responder citando

Hola amigos del foro, estoy intentando abriri un fichero de texto y eliminar una linea (cualquiera) en este hasta ahota lo ahgo muy complicado

Código:
TStringList *sl ¿ new TStringList();
ifstream in(ficheto);
string line;
while(getline(in,line))
   sl->Add(line);
in.close();

s->Delete(8);

ofstream out(file,ios::out)
out.close();

ofstream out(file,ios::app)
for (int i = 0; i<sl>Count; i++)
   out<<sl>Strings(i)<<"\n";
out.close();




Como ven es muy falto de etica
espero me puedan ayudar
_________________
Todos somos ignorantes, lo que no todos ignoramos lo mismo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Si que se puede hacer mas fácil, pero tiene un pequeño problema
Código:
TStringList *lineas = new TStringList();
lineas->LoadFromFile("fichero.txt");
lineas->Delete(linea_a_borrar);
lineas->SaveToFile("fichero.txt");

El problema está en que si en el txt aparece algún caracter nulo (0x00) el load no carga todas las lineas

espero que te sirva

Saludos, Bosoft
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola amigo , gracias por responder pero parece que no me hice entender, lo que busco no es un modo de optimizar mi codigo, sino la manera de borrar una linea especifica
ejemplo:
el fichero tiene la linea 233 dice : hola mundo
yo debo poder buscar por el fichero esa linea y borrarla, como si fuese borrar un item del listview. No deseo pasar a otro medio como un StringList o el propio ListViw, sino hacer un borrado directo del fichero. Espero haberme hecho entender.
muchas gracias
_________________
Todos somos ignorantes, lo que no todos ignoramos lo mismo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Pero es que el código de bosoft es correcto, de acuerdo con lo que pusiste tú en el primer mensaje. Tal vez lo que falte sea poder encontrar cualquier línea concreta. POdría ser algo así:
Código:
TStringList *lineas = new TStringList();
lineas->LoadFromFile("fichero.txt");
for (int nLinea = 0; nLinea <lineas>Count; nLinea ++)
     if (lineas->Strings[nLinea] == <texto>)
     {
          lineas->Delete(nLinea);
          break;
     }

lineas->SaveToFile("fichero.txt");

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

ifrit escribió:
Hola amigo , gracias por responder pero parece que no me hice entender, lo que busco no es un modo de optimizar mi codigo, sino la manera de borrar una linea especifica
ejemplo:
el fichero tiene la linea 233 dice : hola mundo
yo debo poder buscar por el fichero esa linea y borrarla, como si fuese borrar un item del listview. No deseo pasar a otro medio como un StringList o el propio ListViw, sino hacer un borrado directo del fichero. Espero haberme hecho entender.
muchas gracias

Al igual que te ha contestado Angel, creo que es la mejor y mas rápida solución. Si quieres hacerlo directamente desde el archivo, tendrás que desplazar desde el primer byte borrado hasta el final todos los bytes que quedan detrás. Si solo es una linea, vale, pero como sean mas, la rutina se va hacer infinita

saludos, Bosoft
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.