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,
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.
Cita de: 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.
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
No ubico que es eso de "Regex", pero yo la búsqueda la haría de la siguiente manera:
For n = 0 to tabla.lenght - 1
If tabla(n) <> TextBox2.Text And tabla(n) <> TextBox3.Text Then
'Aquí el código en caso de que no esté en ninguno de los textbox.
End if
Next
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:
tabla = Split(cadena, "_")
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#msg1951455Puedes utilizar el método Except para llevar a cabo la tarea:
Dim Seriales1 As String = "_xxxxxxxx_zzzzzzzzz"
Dim Seriales2 As String = "_xxxxxxxx_hhhhhhhh_zzzzzzzzz"
Dim Seriales3 As String = String.Join("_", Seriales2.Split("_").Except(Seriales1.Split("_")))
Saludos
Saludos