Re: Consulta sobre txt
Publicado: 09 Jun 2009, 03:44
Chefito,Muy bueno tu aporte, gracias.
Realice un pequeño cambio en el código que permite buscar también por palabra en las líneas del archivo. En el código anterior solo era posible buscar por la palabra con la cual comenzaba la línea, es decir, si la línea del archivo decía “Soy la línea uno” y realizábamos la búsqueda por la palabra “uno”, no obteníamos resultados. Sin embargo con esta modificación se realiza la búsqueda dentro del string de cada línea (a través de la función StringInStr)
Saludos.
Realice un pequeño cambio en el código que permite buscar también por palabra en las líneas del archivo. En el código anterior solo era posible buscar por la palabra con la cual comenzaba la línea, es decir, si la línea del archivo decía “Soy la línea uno” y realizábamos la búsqueda por la palabra “uno”, no obteníamos resultados. Sin embargo con esta modificación se realiza la búsqueda dentro del string de cada línea (a través de la función StringInStr)
Código: Seleccionar todo
#include <file.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
Opt('MustDeclareVars', 1)
Local $texto, $btn, $msg, $aRecords, $listview
Local $fichero="c:\texto.txt" ;aquí pon el path más el nombre del fichero de texto.
If Not _FileReadToArray($fichero ,$aRecords) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
GUICreate(" My GUI input acceptfile", 320, 300, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
$texto = GUICtrlCreateInput("", 10, 5, 300, 20)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$btn = GUICtrlCreateButton("BUSCAR TEXTO", 100, 265)
$listview = GUICtrlCreateListView("Nº LINEA |TEXTO LINEA ", 10, 50, 300, 200)
GUISetState()
$msg = 0
While 1
Sleep(10)
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $btn
Local $cont=-1
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($listview)) ;borra todos los items del listview
For $x = 1 to $aRecords[0]
Dim $existe = StringInStr($aRecords[$x],GUICtrlRead($texto))
if ($existe <> 0 ) Then
_GUICtrlListView_AddItem($ListView, $x) ;suma en la 1º columna el número de fila de texto encontrada
$cont=$cont+1
_GUICtrlListView_AddSubItem($ListView, $cont, $aRecords[$x], 1) ;suma el texto en la 2º columna de la fila encontrada.
EndIf
Next
EndSelect
Saludos.