Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/11/2003, 18:06
Avatar de RootK
RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 10 meses
Puntos: 50
Mira.. siguiendo la lógica que tienes en tu VBscript, para net es casi lo mismo...lo que hice fue tener 1 cuadro de texto (txtRut), un boton y una etiqueta (label1) donde me desplegará cualquier tipo de error.

Y el código sería de ésta manera.
Cita:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Valida_Rut(txtRut.Text)
End Sub

y las funciones:

Cita:
Function StrToCifra(ByVal str As String) As String
Dim str_Aux As String
Dim V_Indice1, V_Indice2 As Integer

V_Indice1 = Len(str)
V_Indice2 = 0
str_Aux = ""

While V_Indice1 > 0
If (V_Indice2 = 3 And V_Indice1 >= 1) Then
str_Aux = str_Aux & "."
V_Indice2 = 0
End If
str_Aux = str_Aux & Mid(str, V_Indice1, 1)
V_Indice1 = V_Indice1 - 1
V_Indice2 = V_Indice2 + 1
End While

V_Indice1 = Len(str_Aux)
str = ""
While V_Indice1 > 0
str = str & Mid(str_Aux, V_Indice1, 1)
V_Indice1 = V_Indice1 - 1
End While

Return str

End Function

Function Remove_Char(ByVal Str As String, ByVal Ch As String) As String
Dim str_Aux As String
Dim V_Indice1, V_Indice2 As Integer

V_Indice1 = Len(Str)
V_Indice2 = 1

While V_Indice2 <= V_Indice1
If Ch <> Mid(Str, V_Indice2, 1) Then
str_Aux = str_Aux & Mid(Str, V_Indice2, 1)
End If
V_Indice2 = V_Indice2 + 1
End While

Return str_Aux

End Function

Function Valida_Rut(ByVal Texto As String)
Dim RUT_Len As Integer
Dim rut As String
Dim ACUM

Dim Formulario As String = txtRut.Text
rut = Remove_Char(UCase(Texto), ".")
rut = Remove_Char(rut, " ")
RUT_Len = Len(rut)

If RUT_Len = 0 Then
MsgBox("Debe Ingresar RUT.", 48, "Error")
Valida_Rut = False
Exit Function
End If

Dim RUT_DV As String = Mid(rut, RUT_Len, RUT_Len)

If RUT_DV = "" Then
Label1.Text = "Ingrese RUT con su digito verificador"
Valida_Rut = False
Exit Function
End If

Dim pos_guion As Integer = InStr(rut, "-")
If pos_guion = 0 Then
pos_guion = RUT_Len
End If

Dim RUT_RUT As String = "000000000000000" & Mid(rut, 1, pos_guion - 1)

If (RUT_RUT = "") Then
Label1.Text = "Debe Ingresar RUT valido."
Valida_Rut = False
Exit Function
End If

If Not IsNumeric(RUT_RUT) Then
Label1.Text = "El RUT ingresado posee caracteres no válidos"
Valida_Rut = False
Exit Function
End If
Dim RUT_RUT_Len As Integer = Len(RUT_RUT)
ACUM = 0
Dim Factor As Integer = 2

While RUT_RUT_Len > 0
If Factor > 7 Then
Factor = 2
End If
ACUM = ACUM + Factor * Mid(RUT_RUT, RUT_RUT_Len, 1)
RUT_RUT_Len = RUT_RUT_Len - 1
Factor = Factor + 1
End While
Dim G As Integer = ACUM Mod 11
Dim h As Integer = 11 - G

Dim veri As String

Select Case h
Case 10
veri = "K"
Case 11
veri = "0"
Case Else
veri = h
End Select
If Trim(veri) <> Trim(RUT_DV) Then
Label1.Text = "El Dígito Verificador ingresado no corresponde al RUT."
Valida_Rut = False
Exit Function
End If
txtResultado.Text = Right(StrToCifra(RUT_RUT) & "-" & RUT_DV, 12)
Valida_Rut = True
End Function
Si te das cuenta casi todo se queda de la misma manera.. pero sería cosa que lo checaras ok..??

Saludos y suerte