Programación General > Visual Basic 6.0 e inferiores
Duda Con String
joselito:
:huh: vereis tengo una duda con un programita en el cual le he asignado una serie de instrucciones a cada letra de manera que cuando escriba un texto se vallan ejecutando todas las instrucciones seguidas en funcion de las letras que contenga esa cadena de caracteres pero solo me reconoce la primera letra y de ahi no pasa a la(s) siguiente(s).
alguien sabria como solucionar esto??
gracias a todos y un saludo
Shiquilla:
¿Podrías explicarlo mejor? ¿o poner parte del código?
Saludos, :P
joselito:
ok, si, vereis mi idea es hacer un traductor de morse pero que en vez de que emita pitidos emita "destellos", es decir, el punto o pitido seria un destello y la ralla
o pitido largo seria un "destello" de mayor duracion ok?
para lo cual he utilizado un shape que cambia de color del negro al blanco, considerandose el blanco como un destello
este cambia de color en funcion de las letras que se introducen en una caja de texto, es decir, cada letra tiene su codigo
entonces por ejemplo para la "A" (punto ralla)
el codigo seria:
en el timer1
vez = vez + 1
if text1 = "A" Then
if vez = 4 Then
timer1.interval = 500
Else
timer1.interval = 100
End if
if vez Mod 2 = 1
shape1.fillcolor = vbBlack
Else
shape1.fillcolor = vbWhite
End if
if vez > 4 Then
timer1.Enabled = False
vez = 0
End if
End if
de esta manera cuando introduzco la "A" en la caja de texto, el shape me lo traduce como un "destello" corto y uno largo.
y mi pregunta es como se podria hacer para que me traduzca una frase o un texto
letra por letra todo seguido??
ya que cuando introduzco mas de dos letras en la caja de texto o no hace nada o solo me traduce la primera
no se si ahora me he explicado mejor :rolleyes:
un saludo y muchas gracias a todos
Blag:
Bueno.....no tengo Visual Basic a la mano....y ya hace varios años que no lo uso para programar....pero veamos...:lol:
Lo que deberías hacer es más o menos lo siguiente:
--- Citar ---Tienes que leer caracter por caracter, para lo cual puedes utilizar un for o un while que vaya desde 0 hasta la longitud de la frase que ha ingresado el usuario....Si mal no recuerdo, la longitud la obtienes con Text1.lenght();
Para leer cada texto....creo que se utiliza el getChar();
--- Fin de la cita ---
Espero que te sirva :hola:
Saludos,
Blag :devil:
Shiquilla:
Vale, creo que lo he entendido..
Yo haría algo así..
--- Código: Text ---Option ExplicitPrivate mnContador As Integer Private Sub Command1_Click()Dim lnI As IntegerDim lsLetra As StringDim lsFrase As String lsFrase = Text1.Text For lnI = 1 To Len(lsFrase) Step 1 lsLetra = Mid(lsFrase, lnI, 1) msTratarLetra lsLetra Next lnIEnd Sub Private Sub msTratarLetra(lsLetra As String) mnContador = mnContador + 1 If lsLetra = "A" Then If mnContador = 4 Then 'Tratamiento Else 'Tratamiento End If If mnContador Mod 2 = 1 Then 'Tratamiento Else 'Tratamiento End If If mnContador > 4 Then 'Tratamiento mnContador = 0 End If End IfEnd Sub
No te recomiendo usar Timer, porque creo que cuando estás en un bucle no se ejecuta el timer hasta que haya acabado. No sé si poniendo un DoEvents para que haga los eventos te lo hará.. yo lo haría así.
Espero haberte ayudado.
Saludos,
Navegación
[#] Página Siguiente
Ir a la versión completa