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 13-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
Busquedad en un txt

Hola, tengo un problema. Lo que quiero es buscar un numero de documento dentro de un archivo y me traiga los datos de ese documento.
El archivo .txt seria asi:
33555444
Carlos
Martinez
66777888
Pedro
Rodriguez

Código:
void __fastcall TfCliente::btnBuscarClick(TObject *Sender)
{
        FILE *FOpen;
        char Nombre[30], Apellido[30], Dni[30];
	if( OpenDialog2->Execute() )
	{
		FOpen = fopen(OpenDialog2->FileName.c_str(), "r+");

		if( FOpen == NULL )
		{
			ShowMessage("El archivo no se pudo abrir");
			return;
		}
                           fscanf(FOpen, "%s", Dni);
                           fscanf(FOpen, "%s", Nombre);
                           fscanf(FOpen, "%s", Apellido);
                           Form1->editDni->Text = Dni;
                           Form1->editNombre->Text = Nombre;
		           Form1->editApellido->Text = hh;
	}
	fclose(FOpen);
}
Con ese codigo logro traer los primeros 3 datos a sus edits correspondiente.
Lo ideal seria tener un edit al cual yo le ingreso el numero de documento y obtengo los datos que le siguen a ese dni.
Agradezco la ayuda.
Responder Con Cita
  #2  
Antiguo 13-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.

Creo que usar TStrings te va a simplificar la tarea:

Código:
...
TStrings *TS = new TStringList;
int curReg = 0;

void __fastcall TForm1::ShowRegister(const int pp)
{
  EditDNI->Text= TS->Strings[pp];
  EditNombre->Text= TS->Strings[pp+1];
  EditApellido->Text= TS->Strings[pp+2];
}

void __fastcall TForm1::btnOpenFileClick(TObject *Sender)
{
  if (OpenDialog1->Execute()) {
     TS->LoadFromFile(OpenDialog1->FileName);
     ShowRegister(0);
  }
}

void __fastcall TForm1::btnBuscarClick(TObject *Sender)
{
  for(int i=0; i< TS->Count; i+=3)
    if (Trim(EditBuscar->Text) == Trim(TS->Strings[i]))
      ShowRegister(i);
}

void __fastcall TForm1::btnNextClick(TObject *Sender)
{
  if (curReg < TS->Count-4) {
    curReg += 3;
    ShowRegister(curReg);
  }
}

void __fastcall TForm1::btnPrevClick(TObject *Sender)
{
  if (curReg >= 3){
    curReg -= 3;
    ShowRegister(curReg);
  }
}
También le agregué dos botones para desplazarte por los registros hacia adelante y hacia atrás.

Saludos
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 13-03-2014 a las 18:47:12.
Responder Con Cita
  #3  
Antiguo 13-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 de nuevo.

Al copiar, sin darme cuenta omití el final:
Código:
...
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  delete TS;
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 13-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
Anda joya, gracias.
Responder Con Cita
  #5  
Antiguo 13-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 de nuevo.

Al copiar, sin darme cuenta omití el final:
Código:
...
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  delete TS;
}
Saludos
Hola, yo otra vez ja. Me gustaria que en ves de mostrarlo en los edit los muestre en un listview. Le agregue esto pero nose como hacer para que liste todos los documento y datos correstpondientes uno bajo de otro solo logro obtener la primer fila. Asi tendria que quedarme:

33555444 Carlos Martinez
66777888 Pedro Rodriguez

Las columnas del listview son documento nombre y apellido

Código:

void __fastcall TfCliente::ShowRegister(const int pp)
{
                TListItem *Item = Form1->ListView1->Items->Add();
                Item->Caption= TS->Strings[pp];
                Item->SubItems->Add(TS->Strings[pp+1]);
                Item->SubItems->Add(TS->Strings[pp+2]);
}
Responder Con Cita
  #6  
Antiguo 14-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
Cita:
Empezado por eennzzoo Ver Mensaje
[b]...
Me gustaria que en ves de mostrarlo en los edit los muestre en un listview. Le agregue esto pero nose como hacer para que liste todos los documento y datos correstpondientes uno bajo de otro solo logro obtener la primer fila. Asi tendria que quedarme:

33555444 Carlos Martinez
66777888 Pedro Rodriguez

Las columnas del listview son documento nombre y apellido
Código:
void __fastcall TfCliente::ShowRegister(const int pp)
{
                TListItem *Item = Form1->ListView1->Items->Add();
                Item->Caption= TS->Strings[pp];
                Item->SubItems->Add(TS->Strings[pp+1]);
                Item->SubItems->Add(TS->Strings[pp+2]);
}
Hola eennzzoo.

Con un TListView a dos columnas (documento y nombre+apellido) la función sería:
Código:
void __fastcall TForm1::ShowRegister(const int pp)
{
  TListItem *lItem = ListView1->Items->Add();
  lItem->Caption = TS->Strings[pp];
  lItem->SubItems->Add(TS->Strings[pp+1]+" "+TS->Strings[pp+2]);
}
Pero debo decirte que el presentar los datos mediante este control, invalida y hace cambiar totalmente el sentido que inicialmente tenía esta y las demás funciones ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 14-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.

Con un TListView a dos columnas (documento y nombre+apellido) la función sería:
Código:
void __fastcall TForm1::ShowRegister(const int pp)
{
  TListItem *lItem = ListView1->Items->Add();
  lItem->Caption = TS->Strings[pp];
  lItem->SubItems->Add(TS->Strings[pp+1]+" "+TS->Strings[pp+2]);
}
Pero debo decirte que el presentar los datos mediante este control, invalida y hace cambiar totalmente el sentido que inicialmente tenía esta y las demás funciones ...

Saludos
Osea que no hay forma de que liste todos los datos del txt al darle al boton?
Con ese codigo solo logro listar el primer documento con nombre y apellido, y no todos. Y luego de que me cargue todos los datos en el listview, ingresar en un edit el numero de documento y que me marque la fila en el listview.
Responder Con Cita
  #8  
Antiguo 14-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.

Implementar lo que buscas con un TListView es un tema totalmente distinto del que se inició el hilo, te ruego que lo plantees como un nuevo tema tal como lo indica el punto ( 8 ) de nuestra guía de estilo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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


La franja horaria es GMT +2. Ahora son las 16:18:38.


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