Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: WestOn en 4 Noviembre 2008, 18:09 pm



Título: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 18:09 pm
Wenas, tengo una duda sobre como hacer esto:
Tenemos una frase cualquiera: hola, que pasa que te cuentas
¿Como puedo hacer para que analize cada letra de la frase?
Ya vi que se puede hacer con un for pero no lo consigo....

un saludo;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: krackwar en 4 Noviembre 2008, 18:11 pm
algo asi?

Código:
For i = 1 To Len(Text1.Text)
MsgBox Mid(Text1, i, 1)
Next i


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 18:27 pm
Wenas, el ejemplo tal cual lo has puesto es justo lo q queria, grax :D


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: krackwar en 4 Noviembre 2008, 19:01 pm
Wenas, el ejemplo tal cual lo has puesto es justo lo q queria, grax :D
Que bueno que te aalla servido  ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 21:06 pm
Hola de nuevo, tengo una duda con el code de antes:
Para coger letra por letra no hay problemas me va muy bien, pero si tengo esto:
Código:
Private Sub Command2_Click()
For i = 1 To Len(Text2.Text)
a = Mid$(Text2, i, 1)
If a = "01000001" Then
...
Si pongo ese numero por ejemplo no me lo saca, quiero decir que con el ejemplo anterior reconoce letra por letra, pero ¿como haria para que usando el for de antes, (u otro), pudiese identificar el numero de arriba?
¿Quiza haciendo que se pare para 'analizar' cada vez que haya un espacio, y luego seguir?

un saludo ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: Novlucker en 4 Noviembre 2008, 21:12 pm
No entiendo... estas buscando una palabra dentro de una cadena?
Por ejemplo... buscar si esta la palabra "fuga", dentro la fase, "ha habido una fuga"?
Porque para eso esta la función instr  :-\


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 21:19 pm
mmm creo q se me a ido la cabeza :rolleyes:, pero voy a aclarar lo q quiero hacer:
Identificar el numero '028736' en "293759 394856 028736 187357", pero como hay mas numeros hacer un for para que vaya uno a uno:
Primero 293759
Segundo 394856
y asi hasta el final

un saludo


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: Novlucker en 4 Noviembre 2008, 21:25 pm
Entonces es lo que he dicho.. porque no utilizar la función instr :huh:
Código
  1. msgbox instr(1,"293759 394856 028736 187357","028736",1)

Saludos


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 21:36 pm
wenas, con InStr lo usaria asi:
Código:
i = InStr(1, Text1.Text, "028736", 1)
¿Pero si el numero se repite? si pasa esto:
028736 349812 569309 028736 982301 759836
Solo detectaria lo detectaria al principio, el siguiente numero igual a el no lo reconoce...nose si me explico bien :xD
grax de antemano


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: Novlucker en 4 Noviembre 2008, 21:43 pm
Claro, porque el instr devuelve la primer coincidencia, y hace referencia, al primer caracter de la palabra buscada.... para eso tienes que utilizar un bucle

Código
  1. i=1
  2. do
  3. e = InStr(i, Text1.Text, "028736", 1)
  4. if e > 0 then
  5. msgbox "coincidencia en " & e
  6. i = e + 1
  7. else
  8. exit do
  9. end if
  10. loop
  11.  

Saludos  ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 21:49 pm
voy a probarlo y ya os comento, grax  :D


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 23:07 pm
wenas, pues estuve probando pero no me sirve lo de InStr, ya que no me vale para "ir paso a paso".
Si tengo que buscar, por ejemplo, 1000 entre 4469 6789 1000 2562 1000 0125
por cada vez q encuentre mil tiene que escribir una letra, pero no como lo hace InStr (que busca lo q le pongas de una tacada todo).
Lo q intento hacer esque vaya numero por numero, no que busque una letra determinada y me de la posicion de la letra inicial..
El for de arriba, el q usa Mid es muy bueno para lo de las letras, yo quiero hacer algo parecido (en el sentido de que va analizando en orden) pero q me busque envez de letra por letra numero por numero.
Numeros de mas de 6 digitos (lo digo porq con un numero de 1 digito si me serviria..;))

jaja espero q se haya entendido, un saludo ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: ssccaann43 © en 4 Noviembre 2008, 23:14 pm
Lo q intento hacer esque vaya numero por numero, no que busque una letra determinada y me de la posicion de la letra inicial..

Quieres que te busque por número y no por una letra determinada, pero que luego te de la posicion de la letra inicial... Ahora me pregunto..

Citar
Si tengo que buscar, por ejemplo, 1000 entre 4469 6789 1000 2562 1000 0125
por cada vez q encuentre mil tiene que escribir una letra, pero no como lo hace InStr (que busca lo q le pongas de una tacada todo).

Donde quieres poner la letra? Puedes hacer un ciclo... que cada vez que te muestra que lo tiene que coloque la letra A por ejemplo...

Código
  1. i=1
  2. do
  3. e = InStr(i, Text1.Text, "028736", 1)
  4. if e > 0 then
  5.            msgbox "coincidencia en " & e
  6.            i = e + 1
  7.            'Coloca otro textbox y cada vez que encuentre esa cifra agregara la letra A
  8.            Text2.Text = Text2.Text + "A"
  9. else
  10.           exit do
  11. end if
  12. loop
  13.  

Aunque lo q posteaste arriba de este mensaje no se entiende...  :xD


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 23:19 pm
Lo q intento hacer esque vaya numero por numero, no que busque una letra determinada y me de la posicion de la letra inicial..

Quieres que te busque por número y no por una letra determinada, pero que luego te de la posicion de la letra inicial... Ahora me pregunto..


EJ: 1000 = a
cada vez q encuentre "1000", escriba "a", pero asi con todos los numeros y tiene q seguir un orden porq sino la suma de las letras al final no tendria sentido ;)

un saludo


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: ssccaann43 © en 4 Noviembre 2008, 23:22 pm
Arriba esta...  :xD


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 4 Noviembre 2008, 23:30 pm
no lo habia visto  :xD, yaya si eso ya lo probe pero no me sirve..
Ya sabia yo q no se entenderia jeje, mira si tenemos un diccionario:
100= H
400= O
500= L
600= A

600= A
900= G
300= U
200= R

Si pongo --> 100 400 500 600 600 900 300 200 --> Hola agur
weno jaja si no me explico bien da =, ya mirare y posteare mañana si tengo alguna duda, pero espero alguna respuesta :P
un saludo


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: Novlucker en 4 Noviembre 2008, 23:41 pm
Si lo vas a poner así....split

Código
  1. texto = "100 400 500 600 800 900 300 200"
  2. aray = split(texto," ")
  3.  
  4. for each a in aray
  5. msgbox a
  6. next

Luego sería cuestión de comparar los valores, con alguna tabla conde estén las equivalencias  :P, por ejemplo con un diccionario  ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 5 Noviembre 2008, 00:12 am
ok probare el code mañana y ya comento que tal ;)
grax


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: vivachapas en 5 Noviembre 2008, 00:30 am
lo q quiere hacer es reemplazar el 1000 x la letra A.. es muy facil, se hace con la funcion Remplace

Código:
Text1.Text = Replace(Text1.Text, "1000", "A")

SALUDOS


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: Novlucker en 5 Noviembre 2008, 00:34 am
lo q quiere hacer es reemplazar el 1000 x la letra A.. es muy facil, se hace con la funcion Remplace
Código:
Text1.Text = Replace(Text1.Text, "1000", "A")

Es otra manera, pero igualmente deberá de generar un listado de letras/números, y bien se reemplaza en la cadena completa, o bien se lee número a número y se genera el resultado  :P


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: s E t H en 6 Noviembre 2008, 01:52 am
usando instr se puede, de esta manera:

Citar
usamos una variable para determinar desde donde buscamos, la inicializamos a 0 para que empiece a buscar desde el principio
empieza el bucle
    busca con instr DESDE LA POSICION DE LA VARIABLE
    si instr dio resultados:
         la variable pasa a tener de valor la posicion de la cadena +1
    si no
          sale del bucle, la cadena no esta mas
vuelve al comienzo


o si no, podes hacer algo asi:
Código:
For i = 1 To Len(Text1.Text)
MsgBox Mid(Text1, i, len("10021"))
Next i


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 6 Noviembre 2008, 18:57 pm
Wenas, grax por los ejemplos ;), al final hice q funcionara :D.
Pero me quede con una duda con esto:
Código:
Private Sub Command2_Click()
For i = 1 To Len(Text1.Text)
a = Mid(Text1, i, 1)
If a = "250000" Then
c03 = "c" 'nueva letra
c01 = c01 + c02 + c03 'variable total + espacio + nueva letra
End If
.....
next
end sub
este ejemplo no era capaz de cambiarme "250000" a "c", ¿alguien sabe porque :huh:?

PD:Lo que hace es guardar la variable a como la variable c03


un saludo ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: cassiani en 6 Noviembre 2008, 19:07 pm
Estas extrayendo un solo carácter de la cadena original,  "a" nunca será igual a "250000".


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 6 Noviembre 2008, 19:14 pm
Tengo un text y en el pongo el valor de a (en este caso 250000) entonces ¿no tendria q entrar por fuerza :xD?
lo digo porq el valor de a lo pongo directamente yo, un saludo ;)


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: cassiani en 6 Noviembre 2008, 19:17 pm
Te digo que si extraes UN solo caracter, nunca entrara al bloque if

Citar
a = Mid(Text1, i, 1)
If a = "250000" Then


Título: Re: Uso del for para 'analizar' frases (><)
Publicado por: WestOn en 6 Noviembre 2008, 19:23 pm
Te digo que si extraes UN solo caracter, nunca entrara al bloque if

Citar
a = Mid(Text1, i, 1)
If a = "250000" Then
:rolleyes: :rolleyes:
grax y un saludo ;)