Programación General > Visual Basic 6.0 e inferiores

 Leer De Un Txt!!!

(1/7) > >>

Gandalf_malaga7:
Buenas!!!!!!!!!!!,
aquí os adjunto dos .txt porque necesito que me echeis una mano.Quiero crear un codigo que extraiga del archivo prueba1 la siguiente cadena: C8120CC, es decir que limpie todos los demás caracteres y me deje esa cadena en una variable o al principio de otro .txt.Igualmente del prueba2 me debe extraer la cadena CA7432CX,es decir le pase el .txt que le pase que se quede sólo con estas cadenas y elimine el resto (estas cadenas son mátriculas os lo comento por si os sirve de ayuda).Necesito esto porque despues compararé estas cadenas con las mátriculas de una base de datos.
Una ayudilla por favor que tengo que entregar esto ya mismo,
gracias a todos.

Brroz:
Hola Gandalf_malaga7.

Aquí te adjunto un ejemplo de una función que puede servir para lo que quieres:


--- Código: Text --- Private Function BuscarCadenaEnArchivo(ByVal FilePathFileName As String, ByVal Cadena As String, Optional ByVal Desde As Long, Optional ByVal CaseSens As Boolean) As Long     If Cadena = "" Then Exit Function     On Error GoTo Err_Buscar     Dim intCanal As Integer    intCanal = FreeFile    Open FilePathFileName For Binary As intCanal     Dim bytBufR() As Byte    ReDim bytBufR(LOF(intCanal) - Desde)        If Desde = 0 Then Desde = 1    Get #intCanal, Desde, bytBufR        On Error Resume Next        Dim lng1 As Long, int1 As Integer    Dim indEncontrado As Boolean, str1 As String    If CaseSens Then        For lng1 = 0 To UBound(bytBufR)            str1 = str1 & Chr(bytBufR(lng1))            If Right(str1, Len(Cadena)) = Cadena Then                BuscarCadenaEnArchivo = lng1 - Len(Cadena) + Desde + 1                Exit For            End If        Next lng1    Else        Cadena = UCase(Cadena)        For lng1 = 0 To UBound(bytBufR)            str1 = str1 & UCase(Chr(bytBufR(lng1)))            If Right(str1, Len(Cadena)) = Cadena Then                BuscarCadenaEnArchivo = lng1 - Len(Cadena) + Desde + 1                Exit For            End If        Next lng1    End If Exit_Buscar:    On Error Resume Next    Close #intCanal    Exit Function Err_Buscar:    MsgBox "(" & Err.Number & ") " & Err.Description _    , vbCritical, "Encontrar cadena"    Resume Exit_Buscar    End Function  
Tan solo unas consideraciones:

La función recibe como parámetros el archivo en el que buscar, la cadena que hay que localizar (obligatorios), la posición a partir de la cual buscar y la opción de distinguir mayúsculas y minúsculas (opcionales). Devuelve un número que corresponde con la posición inicial de la cadena si se encuentra, o 0 en caso contrario.

Si el archivo en el que quieres buscar es muy grande, sería recomendable leer el archivo por partes, redimensionando la matriz bytBufR a un tamaño apropiado y realizando un ciclo con tantas instrucciones Get como fuesen necesarias para completar la longitud del fichero... esto queda para ti, que no se puede pedir todo hecho.

Habrás observado que los bucles se podrían resumir en uno sólo, integrando los if dentro del bucle... Esto último haría la búsqueda notablemente más lenta:
en muchas ocasiones prefiero escribir de más, incluso repitiendo fragmentos de código en sacrificio de un mejor rendimiento en la ejecución (evidentemente el bucle se ejecutará antes cuantas menos preguntas e instrucciones haya por el medio).

Eso es todo, espero que esto te sirva, mago malagueño.

Suerte.

Gandalf_malaga7:
Muchas gracias tío!!!!!!!!!,
me has dado una idea de como realizar la búsqueda.Mi programa lo que hace es lo siguiente:
1)Capturo una foto con texto
2)Reconozco las cadenas de caracteres en la foto las cuales se almacenan en un .txt (pero  aparte de las cadenas se me meten caracteres erroneos y a lo mejor mi cadena tiene un espacio en medio o alguno de estos caracteres en medio).
3)comparo la cadena del .txt con un campo de una base de datos(para ver si pertenece a mi base o no).

Entonces con tu función he pensado que puedo realizar una busqueda por cada cadena de ese campo de mi base de datos.
Se pueden usar comodines en la búsqueda?

Brroz:
Hola Gandalf_malaga7.

Si examinas el código te darás cuenta que no está pensado para utilizar comodines, sin embargo, no sería muy complicado hacer las modificaciones necesarias para que funcionara de tal forma. Ánimo.

Abur.

Gandalf_malaga7:
Hola de nuevo!!!!!!!!!!!!!,

oye Brroz,muchas gracias  :D por la función que me mandaste pero no me dejan usarla,los datos que yo tengo que sacar de los .txt que os adjunto son matriculas,y una vez sacadas tengo que buscar si se encuentran en mi base de datos para ver si esos coches pueden acceder a mi recinto o no.Así que para usar tu función tendría que ir buscando todas las matriculas de mi base de datos en los .txt  :huh: y esto no resulta muy optimo informaticamente para mis jefes :blink: .

Más bien necesito algo de busqueda de patrones ó simplemente una función que me vaya eliminando toda la 'mierda' de mi .txt (me refiero a cualquier caracter que no puede salir en una mátricula,es decir guiones,interrogaciones,espacios en blanco...),y me deje finalmente mi matricula, :smartass:
a ver si me podeis ayudar,gracias!!!!!!!!!!!!! :comp:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa