dudilla sobre como hazer un dicionario

Iniciado por animalx3, 12 Octubre 2008, 18:42 PM

0 Miembros y 1 Visitante están viendo este tema.

animalx3

me gustaria saber como puedo hazer para que me busque una palabra i me salga la definicion
se que podria hazerlo con arrays pero tengo un problema
el problema es que si desconozco la palabra no se como hazerlo

Nijizuishou: Cristal Arco Iris. Son 7 cristales con los colores del arcoiris que al reunirse con la lagrima de Serena forman el Cristal de Plata, ocultos en el interior de siete humanos que son la reencarnacion de los siete demonios más poderosos del negaverso.

digamos que desconozco esta palabra Nijizuishou
pero se esta negaverso
como me lo tendria que hazer para que me buscara las palabras i me saliera la definicion

gracias de antemano

Spider-Net

Yo lo haría usando la función InStr.

Yo tendría dos arrays tipo string. Uno con los nombres y otro con las definiciones. Entonces, haría un textbox donde se insertaría la palabra a buscar. Y luego haría un InStr para buscar esa palabra en el array con todas las palabras y si no lo encontrase, entonces haría una búsqueda de esa palabra en las definiciones por si lo encontrase.

Sería algo así:

Suponiendo que hay dos arrays, uno con las palabras y otro con las definiciones, crea un textbox donde se introducirá la palabra a buscar y un botón que servirá para realizar la búsqueda. Obviamente esto es sólo un ejemplo y he cargado sólo una posición del vector con su nombre y definición pero tendrías que hacer una función que cargase ambos vectores con sus nombres y definiciones correspondientes. Ahí va el ejemplo:

Código (vb) [Seleccionar]
Dim palabras(1 To 50) As String
Dim definiciones(1 To 50) As String

Private Sub Command1_Click()
palabras(20) = "Nijizuishou"
definiciones(20) = "Cristal Arco Iris. Son 7 cristales con los colores del arcoiris que al reunirse con la lagrima de Serena forman el Cristal de Plata, ocultos en el interior de siete humanos que son la reencarnacion de los siete demonios más poderosos del negaverso."

For i = 1 To 50
    If InStr(LCase(palabras(i)), LCase(Text1.Text)) Then
        MsgBox definiciones(i)
    Else
        If InStr(LCase(definiciones(i)), LCase(Text1.Text)) Then
            Msgbox definiciones(i)
        End If
    End If
Next
End Sub


Lo paso todo a minúsculas antes de comparar para evitar que al buscar la palabra "Nijizuishou" con n minúscula no se produjese ningún resultado y ese tipo de cosas. Para esto sólo he tenido que usar la función LCase antes de comparar.

animalx3

ok pero entonces tengo k ir poniendo los nombres i definiciones uno a uno no¿?

i como se haria para azerlo al inverso l buscara una palabra de la definicion i me saliera el nombre con la definicion¿?¿?

Spider-Net

#3
Claro que tendrás que ponerlo de uno en uno o bien cargarlos desde un fichero. Pero eso hazlo tú porque yo no tengo ganas de ponerme a hacer eso xD

Para que fuese al revés... que buscases algo de la definición y te mostrase el nombre dices?, pues es muy sencillo, con el código que te he puesto podrías sacarlo...

Código (vb) [Seleccionar]

Dim palabras(1 To 50) As String
Dim definiciones(1 To 50) As String

Private Sub Command1_Click()
palabras(20) = "Nijizuishou"
definiciones(20) = "Cristal Arco Iris. Son 7 cristales con los colores del arcoiris que al reunirse con la lagrima de Serena forman el Cristal de Plata, ocultos en el interior de siete humanos que son la reencarnacion de los siete demonios más poderosos del negaverso."

For i = 1 To 50
    If InStr(LCase(definiciones(i)), LCase(Text1.Text)) Then
        MsgBox palabras(i) & ": " & definiciones(i)
    End If
Next
End Sub

animalx3

gracias

aver si me sabes decir pk me da error de compilacion esk cuando quiero poner una palabra en el formulario me dice error de compilacion
Dim palabras(0 To 10) As String
Dim definiciones(0 To 10) As String

Private Sub Command1_Click()


Dim_palabras(0) = "a-su"
Dim_palabras(1) = "Aa"
Dim_palabras(2) = "Abayo"
Dim_palabras(3) = "Abekku"
Dim_palabras(4) = "Abunai"
Dim_palabras(5) = "Ace o Nerea"
Dim_palabras(6) = "Achi Kochi"
Dim_palabras(7) = "Aenaisago"
Dim_palabras(8) = "Agemasu"
Dim_palabras(9) = "Ah souka"




Dim_definiciones(0) = "Dia de la Tierra (22 de Abril)."
Dim_definiciones(1) = "Ah, Er. "
Dim_definiciones(2) = "Es a 'sayonara' como 'kisama' es a 'anata'... En términos más simples, 'abayo' es una forma muy poco cortés de despedirse de alguien."
Dim_definiciones(3) = "Juntos (con alguien)."
Dim_definiciones(4) = "Peligro, Peligroso, ¡Cuidado!."
Dim_definiciones(5) = "Raqueta de oro."
Dim_definiciones(6) = "Aquí y alla"
Dim_definiciones(7) = "Muerte Tragica. "
Dim_definiciones(8) = "Dar."
Dim_definiciones(9) = "Ah correcto."
 
Dim i As Integer
Dim palabras As String

Dim mensaje As Variant
If Text1 = "" Then
mensaje = MsgBox("escrive una palabra", vbExclamation, "te has oblidado de escribir la palabra")
End If

Next

mensaje = MsgBox("esta palabra no esxiste", vbOKOnly, "te has oblidado de escribir la palabra")


palabras = Text1.Text
For i = 0 To 10

If palabra = palabras(i) Then
Text2.Text = definiciones(i)
Exit Sub
End If
 
 
For i = 0 To 10
    If InStr(LCase(definiciones(i)), LCase(Text1.Text)) Then
        MsgBox palabras(i)
    End If
Next
End Sub


PD: como tendria que hazerlo para cargar el archivo asin me salvaria de tener que ponerlos todos esk hay un monton de palabras

aaronduran2

Cuando establezcas el valor de la variable palabras y definiciones quitale el Dim_

Saludos.

Spider-Net

#6
Código (vb) [Seleccionar]
Dim palabras(0 To 10) As String
Dim definiciones(0 To 10) As String

Private Sub Command1_Click()


palabras(0) = "a-su"
palabras(1) = "Aa"
palabras(2) = "Abayo"
palabras(3) = "Abekku"
palabras(4) = "Abunai"
palabras(5) = "Ace o Nerea"
palabras(6) = "Achi Kochi"
palabras(7) = "Aenaisago"
palabras(8) = "Agemasu"
palabras(9) = "Ah souka"




definiciones(0) = "Dia de la Tierra (22 de Abril)."
definiciones(1) = "Ah, Er. "
definiciones(2) = "Es a 'sayonara' como 'kisama' es a 'anata'... En términos más simples, 'abayo' es una forma muy poco cortés de despedirse de alguien."
definiciones(3) = "Juntos (con alguien)."
definiciones(4) = "Peligro, Peligroso, ¡Cuidado!."
definiciones(5) = "Raqueta de oro."
definiciones(6) = "Aquí y alla"
definiciones(7) = "Muerte Tragica. "
definiciones(8) = "Dar."
definiciones(9) = "Ah correcto."
 
Dim i As Integer
Dim pal As String

Dim mensaje As Variant
If Text1.Text = "" Then
    mensaje = MsgBox("escribe una palabra", vbExclamation, "te has olvidado de escribir la palabra")
End If

mensaje = MsgBox("esta palabra no existe", vbOKOnly, "te has olvidado de escribir la palabra")


pal = Text1.Text
For i = 0 To 10
    If pal = palabras(i) Then
        Text2.Text = definiciones(i)
        Exit Sub
    End If
Next
 
For i = 0 To 10
    If InStr(LCase(definiciones(i)), LCase(Text1.Text)) Then
        MsgBox palabras(i)
    End If
Next
End Sub


- Dim solo se usa para declarar variables, nunca más a lo largo del programa.
- Has declarado la variable "palabras" y ese es el mismo nombre que tenía el vector. No puede haber dos variables con un mismo nombre en un programa.
- Indenta bien tu código, sólo tenias indentado lo que habías copiado de mi ejemplo y si un código no está bien indentado es más difícil de entender.
- Te he corregido varias faltas de ortografía, "escribe" es con b y no es "oblidado" es "olvidado".

LEE UN BUEN MANUAL DE VISUAL BASIC, POR TUS ERRORES DEDUZCO QUE ESTÁS MUY PERDIDO Y NO TIENES MUCHA IDEA DEL TEMA, ASÍ QUE ES MEJOR QUE ESTUDIES UN POCO ANTES DE EMPEZAR A PROGRAMAR.

Como siempre digo, no quieras correr sin saber gatear...

Saludos!

animalx3

vale me tragare todos los manuales que sea necesario >:D

i gracias por coregir el codigo ;)