 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Sab 03 Abr, 2010 5:55 pm Asunto: Como borrar linea en un fichero |
|
|
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Dom 04 Abr, 2010 1:47 pm Asunto: |
|
|
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 |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Mar 20 Abr, 2010 1:15 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 20 Abr, 2010 7:47 am Asunto: |
|
|
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Mar 20 Abr, 2010 9:15 pm Asunto: |
|
|
| 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 |
|
 |
|
|
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.
|