Programación General > Visual Basic 6.0 e inferiores

 Duda Con String

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa