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 21-03-2014
Avatar de eennzzoo
eennzzoo eennzzoo is offline
Miembro
NULL
 
Registrado: nov 2013
Ubicación: Argentina
Posts: 59
Poder: 11
eennzzoo Va por buen camino
Borrar lineas de txt

Hola tengo un archivo txt el cual contiene varios datos de distintos usuarios por ejemplo.
dni1
nombre1
apellido1
dni2
nombre2
apellido2

Tengo lo que se encargar de buscar y mostrar en los labels, me falta que una vez que busco a cierta persona la elimine del txt. Sin que me queden espacios en blancos, si quisiera eliminar al dni1, tendria que quedarme asi el txt:
dni2
nombre2
apellido2

Código:
TStrings *TS = new TStringList;
TS->LoadFromFile("datos.txt");


void __fastcall TfCliente::MostrarRegistro(const int pp,const int c) {
        lblCliente->Caption = "Datos de "+TS->Strings[pp+1]+" "+TS->Strings[pp+2];
        lblDni->Caption = TS->Strings[pp];
        lblNombre->Caption = TS->Strings[pp+1];
        lblApellido->Caption = TS->Strings[pp+2];
        lblDireccion->Caption = TS->Strings[pp+3];
        lblMail->Caption = TS->Strings[pp+4];
        lblTelefono->Caption = TS->Strings[pp+5];
        lblCelular->Caption = TS->Strings[pp+6];
        lblEdad->Caption = TS->Strings[pp+7];
        lblNacimiento->Caption = TS->Strings[pp+8];
        lblNumeroCliente->Caption = c;
}
void __fastcall TfCliente::btnBuscarClick(TObject *Sender)
{
        if (editBuscar->Text != ""){
                int docu=0;
                int c;
                for(int i=0; i< TS->Count; i+=9) {
                        if (Trim(editBuscar->Text) == Trim(TS->Strings[i])) {
                                c=TS->Count/9;
                                MostrarRegistro(i,c);
                                editBuscar->Text = "";
                                break;}
                        else {
                        docu+=9;
                                if (docu == TS->Count) {
                                Application->MessageBox("El cliente no existe.","AVISO", MB_OK | MB_ICONEXCLAMATION);
                                editBuscar->Text = "";
                                lblCliente->Caption = "";
                                lblDni->Caption = "";
                                lblNombre->Caption = "";
                                lblApellido->Caption = "";
                                lblDireccion->Caption = "";
                                lblMail->Caption = "";
                                lblTelefono->Caption = "";
                                lblCelular->Caption = "";
                                lblEdad->Caption = "";
                                lblNacimiento->Caption = "";
                                lblNumeroCliente->Caption = "";
                                }
                        }
                }
                if (TS->Count == 0){
                        Application->MessageBox("El cliente no existe.","AVISO", MB_OK | MB_ICONEXCLAMATION);
                }
        }
        else {
                        Application->MessageBox("Ingrese un numero de documento.","AVISO", MB_OK | MB_ICONEXCLAMATION);
        }
}
void __fastcall TfCliente::btnEliminarClick(TObject *Sender)
{
       if (lblApellido->Captiont != ""){

                const int result = Application->MessageBox(("Desea eliminar al cliente " + lblApellido->Caption+" "+lblNombre->Caption+" ?").c_str() ,"AVISO", MB_YESNO | MB_ICONQUESTION);
                switch (result)
                {
                case IDYES:
                        Application->MessageBox("El cliente fue eliminado correctamente.","Cliente eliminado", MB_OK);
                        break;
                case IDNO:
                        break;
                }
        }
}
Responder Con Cita
  #2  
Antiguo 21-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.099
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Muy bien, y ¿el problema?
Responder Con Cita
  #3  
Antiguo 21-03-2014
Avatar de eennzzoo
eennzzoo eennzzoo is offline
Miembro
NULL
 
Registrado: nov 2013
Ubicación: Argentina
Posts: 59
Poder: 11
eennzzoo Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Muy bien, y ¿el problema?
Eliminar los datos del txt, de la persona que busco.
Responder Con Cita
  #4  
Antiguo 22-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola eennzzoo

Código:
void DeleteData(TStrings *TS, String dni)
{
  int ix = TS->IndexOf(dni);

  if (ix != -1) {
    if (MessageBox(0,"¿ Desea borrar los datos ?","",MB_YESNO)==IDYES) {
      TS->Delete(ix+2);
      TS->Delete(ix+1);
      TS->Delete(ix);
    }
  } else
    MessageBox(0,"No se encontró una persona con ese DNI","", MB_OK);
}
Ejemplo de uso:
Código:
void __fastcall TForm1::btnDeleteClick(TObject *Sender)
{
  DeleteData(Lista, EditDNI->Text);
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 22-03-2014
Avatar de eennzzoo
eennzzoo eennzzoo is offline
Miembro
NULL
 
Registrado: nov 2013
Ubicación: Argentina
Posts: 59
Poder: 11
eennzzoo Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola eennzzoo

Código:
void DeleteData(TStrings *TS, String dni)
{
  int ix = TS->IndexOf(dni);

  if (ix != -1) {
    if (MessageBox(0,"¿ Desea borrar los datos ?","",MB_YESNO)==IDYES) {
      TS->Delete(ix+2);
      TS->Delete(ix+1);
      TS->Delete(ix);
    }
  } else
    MessageBox(0,"No se encontró una persona con ese DNI","", MB_OK);
}
Ejemplo de uso:
Código:
void __fastcall TForm1::btnDeleteClick(TObject *Sender)
{
  DeleteData(Lista, EditDNI->Text);
}
Saludos
Hola, lo probe, pero no borra nada del archivo. Por ejemplo puse TS->Delete(0); en el boton eliminar, y eso tendria que eliminar la primer linea del txt, pero el txt sigue estando igual.
Responder Con Cita
  #6  
Antiguo 22-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ennzzoo.
Cita:
Empezado por eennzzoo Ver Mensaje
Hola, lo probe, pero no borra nada del archivo. Por ejemplo puse TS->Delete(0); en el boton eliminar, y eso tendria que eliminar la primer linea del txt, pero el txt sigue estando igual.
Si usaste el método Delete con el valor cero como argumento y no borró nada se me ocurren dos posibles causas:
  • El TStringList está vacío.
  • Tu C++ Builder funciona mal.
Mas probable es que el elemento haya sido efectívamente eliminado de la lista, pero el control que se encarga de visualizarla no se hubiera actualizado luego del borrado.

Para evitar confusiones te adjunto el código fuente de un ejemplo operativo, así podrás revisarlo con tranquildad. Solo descomprimilo en una carpeta, contiene el archivo de texto (file.txt).
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 25-09-2014 a las 02:46:14.
Responder Con Cita
  #7  
Antiguo 23-03-2014
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
Cita:
Empezado por eennzzoo Ver Mensaje
Hola, lo probe, pero no borra nada del archivo. Por ejemplo puse TS->Delete(0); en el boton eliminar, y eso tendria que eliminar la primer linea del txt, pero el txt sigue estando igual.
Creo que no habéis entendido a eennzzoo, tiene razón, no se borra del archivo.

Quizas eennzzoo está buscando un ajuste como este:
Código:
void DeleteData(TStrings *TS, String dni)
{
  int ix = TS->IndexOf(dni);

  if (ix != -1) {
    if (MessageBox(0,"¿ Desea borrar los datos ?","",MB_YESNO)==IDYES) {
      TS->Delete(ix+2);
      TS->Delete(ix+1);
      TS->Delete(ix);
      Lista->SaveToFile(ExtractFilePath(Application->Name)+"file.txt");
    }
  } else
    MessageBox(0,"No se encontró una persona con ese DNI","", MB_OK);
}
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
Dibujar y borrar lineas con el movimiento de labels Acanol Gráficos 7 29-05-2006 10:50:43
Borrar lineas detalle al borrar registro maestro akinom38 Conexión con bases de datos 3 11-01-2006 10:38:07
Borrar Lineas en Word con delphi Renees Varios 0 21-10-2005 15:46:39
Borrar lineas Luli Gráficos 2 29-07-2005 15:21:28
Luego de borrar lineas en un memo... pablo OOP 3 26-04-2005 01:03:02


La franja horaria es GMT +2. Ahora son las 22:01:39.


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