SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: RadicalEd en Viernes 1 de Julio de 2005, 20:13

Título: El For No Me Corre
Publicado por: RadicalEd en Viernes 1 de Julio de 2005, 20:13
Hola chicos de SoloCodigo, miren tengo este código:
Código: Text
  1. Private Sub CmdCalc_Click()
  2. Dim iCont As Integer
  3. Dim sFrase As String
  4. Dim x, h, w
  5. x = Len(TxtWord.Text)
  6. sFrase = TxtWord.Text
  7. For h = 1 To x
  8.     w = Mid(sFrase, 1, h)
  9.     If w = " " Then
  10.        iCont = iCont + 1
  11.     End If
  12. Next h
  13. MsgBox iCont
  14. End Sub
  15.  
Y pues lo que pasa es que el for no me corre, cual es el error, me ayuda porfa'.

Gracias Chao.
Título: Re: El For No Me Corre
Publicado por: Kev en Sábado 2 de Julio de 2005, 03:04
declara x, h, w, pro separado
Dim x as integer
Dim h as integer
Dim w as integer

'Asugura que x es entero y no un variant
nos vemos
 :comp:
Título: Re: El For No Me Corre
Publicado por: eliza_marti en Sábado 2 de Julio de 2005, 17:21
Hola Radical.. :hola: ..mmm..pienso que tu error puede estar en que nunca incrementas la variable h dentro de tu for, tienes que incrementarla para que siga el ciclo..y ..la validacion que haces del espacio dentro del for no le pongas espacio ponle asi : w="" ...segun lo que me puedo dar cuenta es que quieres que en un text se ingrese algun texto y que si no se ingresa nada  te presente un uno.. :unsure: ..bueno.. :rolleyes:

Código: Text
  1. Private Sub Command1_Click()
  2. Dim iCont As Integer
  3. Dim sFrase As String
  4. Dim x, h, w
  5. x = Len(Text1.Text)
  6. sFrase = Text1.Text
  7. For h = 1 To (x + 1)
  8.    w = Mid(sFrase, 1, h)
  9.    If w = "" Then
  10.       iCont = iCont + 1
  11.    End If
  12.    h = h + 1
  13. 'MsgBox w
  14. Next h
  15. MsgBox iCont
  16. End Sub
  17.  

Espero que te sirva de guia..chaitos.. :hola:  nos vemos.. :hola:  :ph34r:
Título: Re: El For No Me Corre
Publicado por: Kev en Sábado 2 de Julio de 2005, 18:48
Hola de nuevo pues creo que el h esta bien pues es el que sirve de pivote(una manera de decile como indice) y este por la propia sintaxis de VB se autoincremente, ahora si lo que quieres compara son caracteres como espacio, etc. usa sus similares ej la letra A es chr(65), una la tabla ASCII

Chau
 :comp:  :hola:
Título: Re: El For No Me Corre
Publicado por: eliza_marti en Sábado 2 de Julio de 2005, 19:12
Tenes toda la razon con lo de la variable h Kev..ya me estaba confundiendo con C ... :unsure: ...mmm..en todo caso..prueba sin lo de la h...y una preguntita....Radical...que necesitas hacer?.. :)  ...

Saluditos!.. :hola: .. :ph34r:  :comp:
Título: Re: El For No Me Corre
Publicado por: Juanolo en Sábado 2 de Julio de 2005, 19:16
Hola:
Lo que veo es lo siguiente:

Citar
w = Mid(sFrase, 1, h)

Si sólo quieres leer un caracter, debe ser:

Código: Text
  1. w=Mid(sFrase, h, 1)
  2.  

Es de esos momentos en que los árboles no dejan ver el bosque.

Salu2.
Título: Re: El For No Me Corre
Publicado por: Shiquilla en Sábado 2 de Julio de 2005, 19:17
Buenas, el error simplemente está en la función Mid.

Código: Text
  1. Mid(Frase, Inicio, Cuantos)
  2.  
Mid(Frase,h,1) en vez de Mid(Frase, 1, h)

Código: Text
  1. Private Sub CmdCalc_Click()
  2. Dim iCont As Integer
  3. Dim sFrase As String
  4. Dim x, h, w
  5. x = Len(TxtWord.Text)
  6. sFrase = TxtWord.Text
  7. For h = 1 To x
  8.    w = Mid(sFrase, h, 1)
  9.    If w = " " Then
  10.       iCont = iCont + 1
  11.    End If
  12. Next h
  13. MsgBox iCont
  14. End Sub
  15.  

Saludos,  :P

PD: Juanolo se me ha adelantao por 1 minuto xD. Bueno, aún así lo dejo..
Título: Re: El For No Me Corre
Publicado por: Juanolo en Sábado 2 de Julio de 2005, 19:19
Saludos, Shiquilla.
Título: Re: El For No Me Corre
Publicado por: RadicalEd en Sábado 2 de Julio de 2005, 20:02
Cita de: "Shiquilla"
Buenas, el error simplemente está en la función Mid.

Código: Text
  1. Mid(Frase, Inicio, Cuantos)
  2.  
Mid(Frase,h,1) en vez de Mid(Frase, 1, h)

Código: Text
  1. Private Sub CmdCalc_Click()
  2. Dim iCont As Integer
  3. Dim sFrase As String
  4. Dim x, h, w
  5. x = Len(TxtWord.Text)
  6. sFrase = TxtWord.Text
  7. For h = 1 To x
  8.    w = Mid(sFrase, h, 1)
  9.    If w = " " Then
  10.       iCont = iCont + 1
  11.    End If
  12. Next h
  13. MsgBox iCont
  14. End Sub
  15.  

Saludos,  :P

PD: Juanolo se me ha adelantao por 1 minuto xD. Bueno, aún así lo dejo..
Claro lo tenia al reves gracias a todos por resopnder .

PD. eliza, es un programa para C, pero lo estoy empezando el algoritmo en VB y de hay lo termino.

Gracias Chao.