Consulta sobre problema de código en visual basic en las sentencias condicionales if
Hola quisiera saber porque no entra en el segundo if pese a que convar si es igual a un dato de la estructura PR no realiza las instrucciones dentro del if, por favor ayúdenme es urgente, de antemano MUCHA GRACIAS If j = Linea.Length Then For i = 0 To PR.Length - 1 If convar = PR(i).Lexema Then bandera = 1 ListBox1.Items.Add(PR(i).Tipo & " " & contLinea & " " & 0 & " " & PR(i).Lexema)
convar = " " End If Next End If
Para que funcione convar debe ser del mismo tipo que PR(i). Lexema
Hola gracias por la ayuda pero convar es de tipo string y PR(i). Lexema también t dejo el código más extenso a ver si me puedes ayudar, gracias Private Structure Pal_Reser Dim Lexema As String Dim Tipo As Integer End Structure v_alfa = Split(Alfa) v_tnum = Split(t_num) Do While Not (Linea Is Nothing) contLinea += 1 For j = 1 To Linea.Length caracter = Mid(Linea, j, 1) val_carac = Asc(caracter) If (val_carac >= 32 And val_carac <= 126) Then If ((val_carac >= 65 And val_carac <= 90) Or (val_carac >= 97 And val_carac <= 122) Or (val_carac >= 48 And val_carac <= 57) Or (val_carac = 95)) And concadena = " " And connum = " " Then carac2 = Mid(Linea, j + 1, 1) If carac2 <> "" Then val_carac2 = Asc(carac2) End If If ((val_carac >= 65 And val_carac <= 90) Or (val_carac >= 97 And val_carac <= 122)) Then convar = convar & caracter If Not ((val_carac2 >= 65 And val_carac2 <= 90) Or (val_carac2 >= 97 And val_carac2 <= 122) Or (val_carac2 >= 48 And val_carac2 <= 57) Or (val_carac2 = 95)) Or (val_carac2 = val_carac) Then For i = 0 To PR.Length - 1 If convar = PR(i).Lexema Then banderav = 1 ListBox1.Items.Add(PR(i).Tipo & " " & contLinea & " " & "0" & " " & PR(i).Lexema) convar = " " End If Next If banderav = 0 Then For i = 0 To TS.Length - 1 If convar = TS(i).Lexema Then banderav = 1 ListBox1.Items.Add(TS(i).Tipo & " " & contLinea & " " & TS(i).Direccion & " " & TS(i).Lexema) convar = " " End If Next End If If banderav = 0 Then ReDim Preserve TS(TS.Length) TS(TS.Length).Tipo = (tipo = dir + 1) TS(TS.Length).Direccion = (dir = dir + 1) TS(TS.Length).Lexema = convar ListBox1.Items.Add(TS(cont = +1).Tipo & " " & contLinea & " " & TS(cont = +1).Direccion & " " & TS(cont = +1).Lexema) banderav = 0 convar = " " End If banderav = 0 End If End If No entra al if de las instrucciones en negritas pese a que el valor de convar es igual a uno de los de la estructura PR(i). Lexema Gracias
Probablemente no son iguales las cadenas, uno tiene espacios al inicio o la final y el otro no Verifica eso.
Verifica si los valores no son exactamente iguales por espacios, por ejemplo, puedes utilizar Trim para eliminar los espacios
Gracias cheque pero ni eso es, tal vez sea que eh tenido problemas con visual de repente me saca, porque definitivamente no encuentro el error. Gracias por laa ayuda, cuidate