Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Bazzana en 30 Mayo 2010, 17:36 pm



Título: Buscar en varios archivos de texto vb 6.0
Publicado por: Bazzana en 30 Mayo 2010, 17:36 pm
Hola!!

Veran tengo un problema, yo tengo un programa, que se maneja con archivos de texto no?
Y bueno yo quiero que busque X palabra en todos los archivos de texto que haya en una carpeta.

Y el problema es que no se como hacerlo porque yo se hacer que busque en 1 archivo de texto con la funcion getvar.
Pero cuando hay que buscar en todos los archivos de texto de una carpeta se me complica, alguna ayudita?

Desde ya gracias!

Saludos


Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Dessa en 31 Mayo 2010, 20:09 pm
Hola, con Dir seriá así

Código:

Option Explicit

Private Sub Form_Load()

Me.AutoRedraw = True

Dim TeEquisTes As String
TeEquisTes = Dir("C:\Windows\")

While TeEquisTes <> ""
  If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then Me.Print TeEquisTes
  TeEquisTes = Dir
Wend

End Sub





Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Psyke1 en 31 Mayo 2010, 20:26 pm
Ok Dessa, pero lo que quiere tambien es buscar una palabra en un archivo de texto...
Seria asi:

Código
  1. Function Buscar_Palabra(sArchivo As String, sPalabra As String)
  2.    Dim Archivo           As Integer
  3.    Dim Linea             As String
  4.    Archivo = FreeFile
  5.    Open sArchivo For Input As Archivo
  6.        Do While Not EOF(Archivo)
  7.            Line Input #Archivo, Linea
  8.            If InStr(Linea, Word) <> 0 Then
  9.                MsgBox "Encontre la palabra""" & sPalabra & """ en el archivo " _
  10.                & sArchivo, vbInformation
  11.            End If
  12.        Loop
  13.    Close #Archivo
  14. End Function
  15.  
  16. Private Sub Command2_Click()
  17.    Call Buscar_Palabra("c:\windows\1.txt", "hola")
  18. End Sub

Salu2! ;)


Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Dessa en 31 Mayo 2010, 20:42 pm
Hola!!

Y el problema es que no se como hacerlo porque yo se hacer que busque en 1 archivo de texto con la funcion getvar.


Pero cuando hay que buscar en todos los archivos de texto de una carpeta se me complica, alguna ayudita?

Desde ya gracias!

Saludos


Hola PsYkE1, como ya sabe buscar en un archivo ... le estoy explicando  lo que le falta , o sea enumerar todos los archivos txt de una carpeta. para que los verifique con la funcion getvar (a la que el se refiere) dentro del while

Saludos ;)










Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Psyke1 en 31 Mayo 2010, 21:30 pm
Ok, no lo vi...  :laugh:

Salu2! ;)


Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Bazzana en 2 Junio 2010, 18:44 pm
muchas gracias a ambos, pero la verdad no entendi como utilizarlo dessa, me podrias explicar un poco mas?

Yo utilizo la funcion getvar para obtener datos de x archivo de texto

de la siguiente manera:

Código:
Function GetVar(ByVal file As String, ByVal Main As String, ByVal Var As String, Optional EmptySpaces As Long = 1024) As String
    Dim sSpaces As String, szReturn As String
    szReturn = ""
    sSpaces = Space$(EmptySpaces)
    GetPrivateProfileString Main, Var, szReturn, sSpaces, EmptySpaces, file
    GetVar = RTrim$(sSpaces)
    GetVar = Left$(GetVar, Len(GetVar) - 1)
End Function

Private Sub Form_Load()

Archivo = "\Cuentas\" & FrmMain.File1.FileName
txtCuenta.Text = GetVar(App.Path & Archivo, "Numero de Cliente", "Cliente")
txtNombre.Text = GetVar(App.Path & Archivo, "Nombre Y Apellido", "Nombre")

End Sub

Es decir en el archivo busca asi:
[numero de cliente]
cliente="dato que toma"

Como podría adaptar eso a que lo haga en todos los archivos que se encuentran dentro del File1, osea dentro de una carpeta.

Ahora creo que me explique mejor

Desde ya muchas gracias!


Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Dessa en 2 Junio 2010, 22:04 pm
Haber si sirve;

Código:

Sub BuscarClienteNumero(nCliente As Variant)

txtCuenta.Text = ""
txtNombre.Text = ""

Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")


Do While TeEquisTes <> ""
  If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
    If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente") = nCliente Then
       txtCuenta.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente")
       txtNombre.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Nombre Y Apellido", "Nombre")
       Exit Do
    End If
  End If
  TeEquisTes = Dir
Loop

If txtCuenta.Text = "" Then txtCuenta.Text = "Sin Datos"
If txtNombre.Text = "" Then txtNombre.Text = "Sin Datos"


End Sub





Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Bazzana en 2 Junio 2010, 23:03 pm
La verdad que sigo intentando y no puedo, no me darias una ayuda por msn?

XXXXXXXXXXXXXXXX (msn)

desde ya muchas gracias

Moderador: no se pueden dejar direccciones de mail.


Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Dessa en 2 Junio 2010, 23:17 pm
Creá un proyecto nuevo, con Text1, Text2, Text3, Command1 (los archivos de textp se van a crear en el Load) e ingresa en Text1 un numero de cliente (1, 2 o 3 para que te de los datos) (4 o mas para que te de error) 

Código:

Option Explicit
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub Command1_Click()

  Call BuscarClienteNumero(Text1)

End Sub

Sub Form_Load()

If Dir(App.Path & "\Cuentas\", vbDirectory) = "" Then MkDir App.Path & "\Cuentas\"

If Dir(App.Path & "\Cuentas\1.txt") = "" Then
  Open (App.Path & "\Cuentas\1.txt") For Output As #1
    Print #1, "[Numero de Cliente]": Print #1, "Cliente = 1": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Eduardo"
  Close #1
End If
If Dir(App.Path & "\Cuentas\2.txt") = "" Then
  Open (App.Path & "\Cuentas\2.txt") For Output As #1
    Print #1, "[Numero de Cliente]": Print #1, "Cliente = 2": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Guille"
  Close #1
End If
If Dir(App.Path & "\Cuentas\3.txt") = "" Then
  Open (App.Path & "\Cuentas\3.txt") For Output As #1
    Print #1, "[Numero de Cliente]": Print #1, "Cliente = 3": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Paco"
  Close #1
End If

Text1 = "Ingresá nCliente"
Text2 = ""
Text3 = ""

Command1.Caption = "Buscar"

End Sub
Function GetVar(ByVal file As String, ByVal Main As String, ByVal Var As String, Optional EmptySpaces As Long = 1024) As String
    Dim sSpaces As String, szReturn As String
    szReturn = ""
    sSpaces = Space$(EmptySpaces)
    GetPrivateProfileString Main, Var, szReturn, sSpaces, EmptySpaces, file
    GetVar = RTrim$(sSpaces)
    GetVar = Left$(GetVar, Len(GetVar) - 1)
End Function

Sub BuscarClienteNumero(nCliente As Variant)

Text2.Text = ""
Text3.Text = ""

Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")


Do While TeEquisTes <> ""
  If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
    If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente") = nCliente Then
       Text2.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente")
       Text3.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Nombre Y Apellido", "Nombre")
       Exit Do
    End If
  End If
  TeEquisTes = Dir
Loop

If Text2.Text = "" Then Text2.Text = "Sin Datos"
If Text3.Text = "" Then Text3.Text = "Sin Datos"

End Sub








Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Bazzana en 3 Junio 2010, 00:15 am
mmm pasa que yo antes no me exprese bien

Lo que estoy tratando de hacer es un programa, de cuentas corrientes, donde lleva diferentes datos,

ejeplo:
1.dat

[Numero de Cliente]
Cliente=1

[Nombre Y Apellido]
Nombre=Ejemplo

[Teléfono]
Teléfono=Ejemplo

[Domicilio]
Domicilio=Ejemplo

[Documento]
Documento=Ejemplo

[Saldo]
Debe=370

[Proximas Visitas]
Proximo Pago=02/06/2010
Proxima Visita=28/05/2010

Y el que me requirio el programa, me pido que agrege una funcion, con la cual, a el le muestre la gente que tiene que ir a cobrar el dia de hoy y la gente que tiene que visitar, junto con su direccion y telefono, e ingresarsela en un textbox asi luego le manda imprimir desde otro boton y obtiene la gente que tiene que visitar ese dia.


Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Dessa en 3 Junio 2010, 00:50 am
Código:


Sub BuscarPorFecha(sFecha As String)

Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")


Do While TeEquisTes <> ""
 If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
  If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Proximas Visitas", "Proximo Pago") = sFecha Then
      '''''   "Lo  que quieras"
  ElseIf GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Proximas Visitas", "Proxima Visita") = sFecha Then
       ''''''  "Lo  que quieras"
  End If
 End If
 TeEquisTes = Dir
Loop


End Sub





PD: creo que con los datos que te dí lo puedes hacer.






Título: Re: Buscar en varios archivos de texto vb 6.0
Publicado por: Bazzana en 3 Junio 2010, 02:03 am
EXCLENTE!!!

mE FUNCIONO DE 10!!!!

mUCHISIMAS GRACIAS!!!!