FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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); } 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. |
#2
|
||||
|
||||
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); } } 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. |
#3
|
||||
|
||||
Hola de nuevo.
Al copiar, sin darme cuenta omití el final: Código:
... void __fastcall TForm1::FormDestroy(TObject *Sender) { delete TS; }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
Anda joya, gracias.
|
#5
|
||||
|
||||
Cita:
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]); } |
#6
|
||||
|
||||
Cita:
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]); } Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
||||
|
||||
Cita:
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. |
#8
|
||||
|
||||
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 .... |
|
|
|