Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: KCHO089 en 19 Junio 2014, 06:02 am



Título: Ayuda con textbox (Comparar y eliminar cadenas) en vs.net
Publicado por: KCHO089 en 19 Junio 2014, 06:02 am
Saludos amigos necesito una mano, estoi desarrollando una aplicación en vs2008 que manejara seriales de las unidades de disco de la compu, las mimas que se convertirán en llaves únicas para la computadora, ahora necesito realizar un comprobación de que la usb es la correcta y no ha sido alterada como lo hago ps con el serial único de la memoria.


Dim strSN As String = ""
        Dim strQuery As String = "SELECT * FROM Win32_PhysicalMedia"
        Dim query As ManagementObjectSearcher = New ManagementObjectSearcher(strQuery)
        Dim i As Integer = 0
        For Each mo As ManagementObject In query.[Get]()
            If mo("SerialNumber") Is Nothing Then
                strSN = strSN & " " & "N/A Serial"
            Else
                strSN = strSN & " " & mo("SerialNumber").ToString()
            End If
            i += 1
        Next
        TextBox1.Text = strSN


logre extraer esos datos (seriales de las unidades), y se me presentan asi:
_W0494XJW_0C71C850C0923A66_M5C214K1438

(_) es espacio vacio, he colocado un campo que almacena las unidades logicas sin contar las usb

_W0494XJW_M5C214K1438
Unidad C:     Unidad CD

al conectar el flas memory me sale
_W0494XJW_0C71C850C0923A66_M5C214K1438
Unidad C:     Unidad USB               Unidad CD

miren un screen http://www.subirimagenes.com/otros-sinttulo-8961668.html

ahora lo que deseo es que en el 3er campo se extraiga la cadena que no se encuentra en el campo 1 y 2, lo que significaria que la unidad USB es la del serial resultante que seria

_0C71C850C0923A66

de antemano les envio saludos  a todos y espero que puedan ayudarme,


Título: Re: Ayuda con textbox (Comparar y eliminar cadenas) en vs.net
Publicado por: El Benjo en 19 Junio 2014, 06:14 am
Hazlo mediante la función split() en el parámetro del separador utilizas "_".

http://msdn.microsoft.com/es-es/library/6x627e5f(v=vs.90).aspx (http://msdn.microsoft.com/es-es/library/6x627e5f(v=vs.90).aspx)

Después comparas las cadenas con las que tienes almacenadas y si hay alguna que no se encuentre, pues ya sabes que esa pertenece a la memoria.


Título: Re: Ayuda con textbox (Comparar y eliminar cadenas) en vs.net
Publicado por: KCHO089 en 19 Junio 2014, 06:35 am
Hazlo mediante la función split() en el parámetro del separador utilizas "_".

http://msdn.microsoft.com/es-es/library/6x627e5f(v=vs.90).aspx (http://msdn.microsoft.com/es-es/library/6x627e5f(v=vs.90).aspx)

Después comparas las cadenas con las que tienes almacenadas y si hay alguna que no se encuentre, pues ya sabes que esa pertenece a la memoria.


ola use el split de esta manera:


Dim cadena As String
        Dim tabla() As String
        Dim n As Integer

        cadena = TextBox1.Text
        tabla = Split(cadena, " ")

        For n = 0 To UBound(tabla, 1)
            MessageBox.Show(tabla(n))
        Next
    End Sub

y para buscar en las cadenas use:

Dim regex As New Regex(Me.TextBox2.Text, RegexOptions.RightToLeft)
        TextBox3.Text = regex.Replace(TextBox1.Text, String.Empty).ToString

me saca el mismo resultado, osea todas las unidades mas no la que necesito que seria la cadena que no se repite en el text 1 y text2


Título: Re: Ayuda con textbox (Comparar y eliminar cadenas) en vs.net
Publicado por: El Benjo en 19 Junio 2014, 07:01 am
No ubico que es eso de "Regex", pero yo la búsqueda la haría de la siguiente manera:

Código
  1. For n = 0 to tabla.lenght - 1
  2.   If tabla(n) <> TextBox2.Text And tabla(n) <> TextBox3.Text Then
  3. 'Aquí el código en caso de que no esté en ninguno de los textbox.
  4.   End if
  5. Next
  6.  

Suponiendo que la variable 'cadena' es igual a:_W0494XJW_0C71C850C0923A66_M5C214K1438

Y otra cosa el split debes hacerlo con el caracter "_" en lugar del espacio:

Código
  1. tabla = Split(cadena, "_")


Título: Re: Ayuda con textbox (Comparar y eliminar cadenas) en vs.net
Publicado por: Eleкtro en 28 Junio 2014, 05:45 am
Cierro el tema por pregunta duplicada.

PD: Te dejo esto por aquí, por si no llegas a leer mi respuesta en el otro tema:

Cita de: http://foro.elhacker.net/net/necesito_ayuda_con_unos_textbox_en_net-t416897.0.html;msg1951455#msg1951455
Puedes utilizar el método Except para llevar a cabo la tarea:

Código
  1. Dim Seriales1 As String = "_xxxxxxxx_zzzzzzzzz"
  2. Dim Seriales2 As String = "_xxxxxxxx_hhhhhhhh_zzzzzzzzz"
  3. Dim Seriales3 As String = String.Join("_", Seriales2.Split("_").Except(Seriales1.Split("_")))

Saludos

Saludos