Domingo 15 de Diciembre de 2024, 07:53
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
»
C++ Builder
(Moderador:
Eternal Idol
) »
Realizar búsqueda de texto en carpeta de archivos .txt
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Realizar búsqueda de texto en carpeta de archivos .txt (Leído 2743 veces)
Akemati
Nuevo Miembro
Mensajes: 8
Realizar búsqueda de texto en carpeta de archivos .txt
«
en:
Miércoles 10 de Noviembre de 2010, 14:35 »
0
Hola,
Estoy realizando una aplicación en la que quisiera incluir un sencillo motor de búsqueda que permita, al introducir texto o palabras clave en un TEdit por ejemplo, recuperar la ubicación del archivo de texto
.txt
que más coincida con mi búsqueda (para posteriormenete utilizarlo), dicho archivo estará ubicado en alguna carpeta que reagrupa varios ficheros
.txt
almacenados previamente.
Mucho les agradezco su ayuda!
Tweet
softevolutions
Miembro activo
Mensajes: 84
Nacionalidad:
Re: Realizar búsqueda de texto en carpeta de archivos .txt
«
Respuesta #1 en:
Miércoles 10 de Noviembre de 2010, 19:09 »
0
Tienes un componente llamado TFileListBox. Hechale un vistazo a ve si te sirve.
Ahí tienes todos los ficheros de una ubicación concreta.
:: Lo que puedes hacer sólo lo limita tu propia imaginación ::
Soft Evolutions Technology -
http://www.softevolutions.es
Akemati
Nuevo Miembro
Mensajes: 8
Re: Realizar búsqueda de texto en carpeta de archivos .txt
«
Respuesta #2 en:
Lunes 15 de Noviembre de 2010, 14:08 »
0
Hola,
Muchas gracias por tu sugerencia, aunque lo que necesito parece un poco más complicado, dado que soy principiante estoy tratando de solucionar mi problema con lo que encuentro en la red. Por allí encontre un componente ActiveX, realizado por el desarrollador SoftInterface, llamado FindInFilesX (no pude poner URL pero se encuentra facilmente en Google) que propone un buscador para insertar en cualquier aplicación y realizar este tipo de consultas, es gratuito y provee además el código pero en VB, viene en el manual un ejemplo sencillo pero no pude aplicarlo pues desconozco este lenguaje. Sería de mucha ayuda si alguien pudiera revisarlo y postear por aquí el código para C++ Builder!
Muchas gracias!
Akemati
Nuevo Miembro
Mensajes: 8
Re: Realizar búsqueda de texto en carpeta de archivos .txt
«
Respuesta #3 en:
Jueves 18 de Noviembre de 2010, 11:38 »
0
Estoy tratando de convertir el código para utilizar el TFileinFilesX como componente C++ Builder pero me marca error en los parámetros de GetFileData, alguién podría ayudarme a traducir el siguiente código para el Builder C++, está escrito en VB:
Código: Visual Basic
Private
Sub
FiFx1_ScanCompleted()
Dim
ii
As
Long
Dim
sData
As
String
Dim
sFileName
As
String
Dim
lLine
As
Long
, lColumn
As
Long
, sFound
As
String
cmdAbort.Visible =
False
lstData.Clear
' Clear List box
' Add data from the FindInFilesX control on the main form
For
ii = 0
To
FifX1.SearchCount - 1
If
(FifX1.GetFileData(ii, sFileName, lLine, lColumn,
sFound) =
True
)
Then
sData = sFileName &
" --- "
& _
CStr(lLine) &
" --- "
& _
CStr(lColumn) &
" --- "
& _
CStr(sFound)
Call
lstData.AddItem(sData)
End
If
Next
ii
Caption = CStr(lstData.ListCount) &
" items found from FifX1"
End
Sub
Akemati
Nuevo Miembro
Mensajes: 8
Re: Realizar búsqueda de texto en carpeta de archivos .txt
«
Respuesta #4 en:
Martes 7 de Diciembre de 2010, 14:17 »
0
Hola,
Un amigo pudo ayudarme a resolver mi problema y por aquí voy a postear el código por si a alguien le es de utilidad.
Se necesita un TEdit para escribir una palabra a buscar, un TButton para lanzar la búsqueda y las coincidencias junto con la ruta del archivo(s) encontrado(s) se despliegan en un TListBox.
Esto en el header:
Código: C++
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<windows.h>
Después poner el siguiente código en el evento Onclick del Botón:
Código: C++
AnsiString Texto
;
AnsiString Texto2
;
char
Pbuscar
[
255
]
;
char
linea
[
255
]
;
char
*
coincidenciast
[
255
]
;
char
frase
[
255
]
;
int
contador
;
int
longitud
;
char
c
;
FILE
*
archivo
;
WIN32_FIND_DATA findFileData
;
HANDLE hFind
;
char
dirtmp
[
255
]
;
char
exttmp
[
255
]
;
char
dir
[
255
]
;
char
filename
[
255
]
;
char
ruta
[
255
]
;
std
::
string
str
;
Texto
=
Edit1
-
>
Text
;
//Recuperar el texto desde el TEdit
strcpy
(
Pbuscar,Texto.
c_str
(
)
)
;
strcpy
(
dirtmp,
"c:\MiCarpeta
\"
); //Aquí el directorio conteniendo los archivos a buscar
strcpy(dir, dirtmp);
strcat(dir,"
\
");
strcat(dirtmp,"
*
.
txt
"); //Esta es la extensión de archivos en dónde realiza la búsqueda
hFind = FindFirstFile(dirtmp, &findFileData);
if(hFind == INVALID_HANDLE_VALUE)
{
printf("
Directorio no existe o es incorrecto
");
}
else
{
strcpy(ruta,"
");
str = (std::string)findFileData.cFileName;
longitud = str.length();
if(longitud >12)
{
str = (std::string)findFileData.cAlternateFileName;
}
for(int i=0; i < longitud;i++)
{
filename[i] = str[i];
}
filename[longitud] = ' ';
strcpy(ruta, dir);
strncat(ruta, filename, strlen(filename));
contador = 0;
if((archivo = fopen(ruta,"
r
")) != NULL)
{
while ((fscanf(archivo, "
%
s
%
c
", linea, &c)) != EOF)
{
if(strcmp(linea, Pbuscar) == 0 && *linea != ' ')
{
contador++;
}
}
if(contador>0)
{
}
fclose(archivo);
}
else
{
printf("
Error al abrir archivo
-
%
s n
", ruta);
getchar();
}
fflush(stdin);
}
while(FindNextFile(hFind, &findFileData) != 0)
{
strcpy(ruta,"
");
contador = 0;
str = (std::string)findFileData.cFileName;
longitud = str.length();
if(longitud>12)
{
str = (std::string)findFileData.cAlternateFileName;
}
for(int i=0; i < longitud;i++)
{
filename[i] = str[i];
}
filename[longitud] = ' ';
strcpy(ruta, dir);
strncat(ruta, filename, strlen(filename));
if((archivo = fopen(ruta,"
r
")) != NULL)
{
while ((fscanf(archivo, "
%
s
%
c
", linea, &c)) != EOF)
{
if(strcmp(linea,Pbuscar) == 0 && *linea != ' ')
{
contador++;
}
}
if(contador>0)
{ strcpy(frase, "
coincidencias en
");
itoa(contador, *coincidenciast, 10);
strncat(*coincidenciast, frase, strlen(frase));
strncat(*coincidenciast, ruta, strlen(ruta));
lstData->Items->Add(*coincidenciast); //Enviar búsqueda a TListBox
}
fclose(archivo);
}
else
{
printf("
Error al abrir archivo
-
%
s n
", ruta);
getchar();
//exit(1);
}
fflush(stdin);
}
Una disculpa ya que el código no está ni bien comentado ni optimizado pero a mi me ayudó en mi problema.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
»
C++ Builder
(Moderador:
Eternal Idol
) »
Realizar búsqueda de texto en carpeta de archivos .txt