Página 1 de 1

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 03:44
por henry
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)

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.

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 03:59
por Chefito
Bueno....se puede hacer muchas cosas y muchas mejorar. A gusto del consumidor :smt005 . Según lo que se quiera.

Yo por ejemplo, seguramente lo mejoraría con una búsqueda...ehhhh.....no recuerdo como se llama! :smt005 . Una búsqueda que mientrar vas escribiendo te va mostrando los resultados directamente, sin tener que darle a un botón.
No es muy dificil. Sería incluir algo más de código.

Saludos.

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 04:19
por henry
Chefito escribió:Bueno....se puede hacer muchas cosas y muchas mejorar. A gusto del consumidor :smt005 . Según lo que se quiera.

Yo por ejemplo, seguramente lo mejoraría con una búsqueda...ehhhh.....no recuerdo como se llama! :smt005 . Una búsqueda que mientrar vas escribiendo te va mostrando los resultados directamente, sin tener que darle a un botón.
No es muy dificil. Sería incluir algo más de código.

Saludos.

Estas haciendo referencia al auto-completado. Si, sería interesante poder incluir dicha funcionalidad.

Saludos.

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 04:29
por Chefito
No es eso. Me acaba de venir la iluminación :smt005 . Se llama búsqueda sensitiva, y se basa en lo que te he dicho antes, que cada vez que le des a una tecla para escribir algo en el input de búsqueda, te hace la búsqueda inmediatamente de lo que hay puesto en ese input, sin necesidad de darle a un boton para iniciar la búsqueda.

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 05:07
por henry
Chefito escribió:No es eso. Me acaba de venir la iluminación :smt005 . Se llama búsqueda sensitiva, y se basa en lo que te he dicho antes, que cada vez que le des a una tecla para escribir algo en el input de búsqueda, te hace la búsqueda inmediatamente de lo que hay puesto en ese input, sin necesidad de darle a un boton para iniciar la búsqueda.
Si, tienes razón. El Auto-completado es cuando te va completando la palabra a medida que vas escribiendo, disculpas.
¿Cómo implementarías una búsqueda sensitiva? ¿AutoIt tiene manejos de eventos asociados a controles?, como por ejemplo en VB el evento keypress, etc.

Gracias.

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 06:01
por Chefito
Sí, tiene esa posibilidad. Con al función GUIRegisterMsg se capturan los mensajes.
Mira el ejemplo de la función _GUICtrlEdit_Create que ahí están casi todos los eventos interesantes escritos :smt002 .
Fijate en el código, en el Case $EN_CHANGE. Se ejecuta lo que está dentro de este caso, cuando el usuario hace cualquier cambio en el control edit. Aquí se podría meter la búsqueda, y cada vez que cambiase el texto el usuario, se ejecutaría ese código :smt020 .

Ahhh, por cierto. Lo anterior equivaldría al procedimiento Private Sub Text1_Change() del vb6 :smt002 .

Saludos.

Re: Consulta sobre txt

Publicado: 09 Jun 2009, 17:50
por henry
Chefito, muchas gracias por la atención y la información.
Saludos.