Programación General > Visual Basic 6.0 e inferiores
Leer De Un Txt!!!
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
[#] Página Siguiente
Ir a la versión completa