krlito__ Posted November 26, 2011 Report Share Posted November 26, 2011 (edited) hola a todos! :D explicare todo lo que estoy haciendo para que me entiendan mejor ESTA EN VB.NET tengo un form1 que donde ingreso los productos marcas, etc y se guardan en c:Testcertamen.txt // dejo el codigo guardado Dim sw As New StreamWriter("c:Testcertamen.txt", True) sw.WriteLine(tx_NombreP.Text & " ; " & tx_marcaP.Text & " ; " & tx_CodigoP.Text & " ; " & NU_PrecioP.Value & " ; " & cb_tipop.SelectedItem) sw.Close() limpiarDatos() MsgBox("El Producto se Guardo Correctamente ", MsgBoxStyle.Information)y me deja el txt guadado de esta forma cada linea m&m ; ambrosoli ; 4a5678 ; 2600 ; chocolates luego en un form2 tengo un boton mostrar todos los productos guardados en certamen.txt dentro de un listview // dejo el codigo Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click If File.Exists("c:Testcertamen.txt") Then ListView1.Items.Clear() Dim sr As New StreamReader("c:Testcertamen.txt") Dim linea = sr.ReadLine Do While Not linea Is Nothing Dim arreglo() As String = linea.Split(";") ListView1.Items.Add(New ListViewItem(New String() {arreglo(0), arreglo(2), arreglo(1), arreglo(3), arreglo(4)})) linea = sr.ReadLine Loop sr.Close() Else MsgBox("Error,No existen Productos.debe registrar algun producto", MsgBoxStyle.Critical) End If hasta aqui todo bien,pero cuando quiero hacer una busqueda de una palabra que fue ingresada por un textbox y buscar dentro del archivo .txt no me a funcionado ningun codigo que e visto en las librerias de microsoft EJ: si en el textbox pusiera m&m y apreto el boton buscar tendria que encontrarm&m ; ambrosoli ; 4a5678 ; 2600 ; chocolates o solamente m&m Edited November 26, 2011 by krlito__ Link to comment Share on other sites More sharing options...
PabloDag Posted November 26, 2011 Report Share Posted November 26, 2011 Ya utilizaste BufferedReader para leer primero y despues StringTokenizer para guardar en un arreglo cada token ejemplo [m&m] ; [ambrosoli] ; [4a5678] ; [2600] ; [chocolates] esos serian tus arreglos ahora para buscar tienes que ver si es por codigo por categoria, etc, luego comparas lo que te ingresaron con lo que tienes en cada token (en el token que quieres comparar), supongo que tienes que mostrar, como ya tienes los datos haces un if que lo que ingresaron que sea igual a lo que encontraste luego de eso llamas a un metodo que sea solo para mostrar Espero te servia cualquier duda sera respondida Saludos Link to comment Share on other sites More sharing options...
krlito__ Posted November 26, 2011 Author Report Share Posted November 26, 2011 Ya utilizaste BufferedReader para leer primero y despues StringTokenizer para guardar en un arreglo cada token ejemplo [m&m] ; [ambrosoli] ; [4a5678] ; [2600] ; [chocolates] esos serian tus arreglos ahora para buscar tienes que ver si es por codigo por categoria, etc, luego comparas lo que te ingresaron con lo que tienes en cada token (en el token que quieres comparar), supongo que tienes que mostrar, como ya tienes los datos haces un if que lo que ingresaron que sea igual a lo que encontraste luego de eso llamas a un metodo que sea solo para mostrar Espero te servia cualquier duda sera respondida Saludos gracias por responder! eso lo tengo claro en JAVA! :) pero esto es VB.NET :( xd saludos y gracias por la info! :P Link to comment Share on other sites More sharing options...
PabloDag Posted November 26, 2011 Report Share Posted November 26, 2011 Jajajajaj dale no me había fijado, me tinca que debe ser algo parecido Saludos Link to comment Share on other sites More sharing options...
susodicho Posted November 28, 2011 Report Share Posted November 28, 2011 Primero, cuando guardas cada línea en el archivo, estás agregando espacios entre cada cadena (además del separador ";"), o sea, cuando después vuelves a separar las cadenas usando Split, lo que obtienes no son las cadenas originales, ya que contienen espacios que antes no había. Por ejemplo: a = "Esto" b = "no" c = "funciona" sw.WriteLine(a & " ; " & b & " ; " & c) al volver a descomponer la línea en cadenas Dim arreglo() As String = linea.Split(";") lo que obtienes es: arreglo(0) = "Esto "arreglo(1) = " no "arreglo(2) = " funciona" si te fijas las cadenas que componen el arreglo no son las originales (nótese los espacios al inicio y al final). Por lo tanto, si es que ahora recorres el arreglo buscando, por ejemplo, la cadena "Esto" no la vas a encontrar.Así que tienes 2 opciones:Sólo agregar el separador ";", sin los espacios extras.Después de separar las cadenas con Split, le aplicas el método Trim a cada una (con esto eliminas los espacios extras al inicio y al final). Lo segundo, creo que deberías usar esta sobrecarga del método WriteLine, es decir, en vez de hacerlo así: sw.WriteLine(txtMarca.Text & ";" & precio.Value & ";" & cbTipo.SelectedItem) hazlo así: sw.WriteLine("{0};{1};{2}", txtMarca.Text, precio.Value, cbTipo.SelectedItem) Tercero, después de llamar a Split deberías verificar que el arreglo tenga la cantidad de elementos que tú esperas. Otra cosa, cuando agregas una fila al ListView no es necesario volver a crear el arreglo de cadenas a partir de un arreglo de cadenas (es redundante), sólo tienes que intercambiar los elementos 1 y 2, y después agregas el arreglo tal cual, sin usar New String() {...}. Por último, para buscar una palabra ingresada por el usuario puedes usar String.Compare ó Contains, dependiendo si vas a buscar en las cadenas individuales generadas al llamar a Split, o si vas a buscar en la línea completa (la que contiene los separadores). En el caso de usar String.Compare, el tercer parámetro debería ser StringComparison.InvariantCulture ó StringComparison.InvariantCultureIgnoreCase. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now