eennzzoo
21-03-2014, 20:43:52
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
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;
}
}
}
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
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;
}
}
}