Visual Basic 2008 Duda

Iniciado por Anonymatrix, 19 Marzo 2013, 23:08 PM

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

Anonymatrix

¿Cómo sería esto?:
Código (vbnet) [Seleccionar]

Private Sub Botón_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Botón.Click
       If TextBox1.Text = "Tu nombre es:" & Texto1 & "Tu apellido es:" & Texto2 Then
           TextBox2.Text = "Dijistes que tu nombre era:" & Texto1 & "Dijistes que tu apellido era:" & Texto2
       End If
   End Sub


Texto1 es el texto que escribe la persona que utiliza en ese momento el programa.

Texto2 es el texto que escribe la persona que utiliza en ese momento el programa.
ola k ase

raul338

De donde sacaste ese codigo? Nunca especificas que es Texto1 ni Texto2

Busca algun manual de programación, te recomiendo el de elGuille

Anonymatrix

Ya lo especifiqué, un saludo.
ola k ase

Eleкtro

#3
Creo que a lo que raul338 se refería es que muestres la parte del código de las variables para especificar el tipo de variable que es, aparte del contenido y de las modificaciones que le hagas...

Ya queda menos, Ahora sólo falta que especifiques lo que intentas hacer...

Saludos!








Anonymatrix

#4
Lo que intento hacer es lo siguiente:


Hay 2 TextBox y 1 Botón, en el primer TextBox tienes que escribir obligatoriamente 1 texto específico, seguidamente un texto que tú quieras y finalmente otro texto en concreto.

El TextBox es el cuadro dónde puedes escribir.


Ejemplo:

Escribo en el primer TextBox lo siguiente:

Tu nombre es:AnonTu apellido es:Anonymous

Se escribe todo junto sin espacios.

Entonces al apretar el Botón en el segundo TextBox te debería aparecer lo siguiente:

Dijistes que tu nombre era:AnonDijistes que tu apellido era:Anonymous

Espero que con este ejemplo hayais logrado comprender lo que quiero obtener.


En VB 2008 especificas que:

Tienes que escribir un texto en concreto + un texto que tú eligas escribir + otro texto en concreto, diferente al primero + otro texto que la persona que utilice el programa desee poner.


Texto obligado + Anon + Otro texto obligado + Anonymous

Anon y Anonymous son ejemplos, la persona que escriba puede poner la palabra o conjunto de palabras que quiera, incluso si envez de escribir Anon, quiere escribir Kevin David, pues puede hacerlo, aunque sean 2 palabras separadas por 1 espacio, quiero que cuente como 1 solo texto que ha elegido la persona escribir.


Ejemplo:

Texto obligado + Kevin David + Otro texto obligado diferente + Mitnick
ola k ase

Eleкtro

#5
Si no he entendido mal, quieres comprobar si el usuario ha escrito 1 texto obligatorio + una o varias palabras + 1 texto obligatorio + una o varias palabras, y luego quieres mostrar los textos obligatorios de otra forma.





Eso puedes hacerlo con expresiones regulares o de la siguiente manera,
Copia este form y ejecútalo (No es necesario que añadas los controles), la única parte que te interesa es la que hay antes del comentario "FINAL DEL EJEMPLO":

PD: Si quieres almacenar el nombre y apellido en una variable, usa RegEX o el método Split.

Código (vbnet) [Seleccionar]
Public Class Form1

   Dim Obligado1 As String = "Tu nombre es:", Obligado2 As String = "Tu apellido es:"
   Dim Obligado1_B = "Dijiste que tu nombre era:", Obligado2_B = "Dijiste que tu apellido era:"
   Dim Nombres As String = Nothing

   Private Sub TBox1_TextChanged(sender As Object, e As EventArgs)
       Nombres = sender.text
   End Sub

   Private Sub Button_Click(sender As Object, e As EventArgs)
       If Nombres Is Nothing Then
           MsgBox("No introduciste nada")
       ElseIf Not Nombres.Contains(Obligado1.ToLower) Or Not Nombres.Contains(Obligado2.ToLower) Then
           MsgBox("No introduciste el texto obligado")
       ElseIf Nombres.Contains(Obligado1.ToLower) And Nombres.Contains(Obligado2.ToLower) Then
           TextBox2.Text = Nombres.Replace(Obligado1.ToLower, Obligado1_B).Replace(Obligado2.ToLower, Obligado2_B)
       End If
   End Sub

   '// Final del ejemplo
   '////////////////////
   '// Final del ejemplo



   ' Controles
   Dim Button As New Button
   Dim TextBox1 As New TextBox
   Dim TextBox2 As New TextBox
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Button.Text = "Comprobar"
       Button.Location = New Point(10, 10)
       TextBox1.Size = New Size(370, 20)
       TextBox2.Size = New Size(370, 20)
       TextBox1.Location = New Point(10, 40)
       TextBox2.Location = New Point(10, 65)
       AddHandler TextBox1.TextChanged, AddressOf TBox1_TextChanged
       AddHandler Button.Click, AddressOf Button_Click
       Me.Controls.Add(Button) : Me.Controls.Add(TextBox1) : Me.Controls.Add(TextBox2)
       Me.Size = New Point(410, 130)
   End Sub

End Class








Anonymatrix

Gracias electro hacker, conseguí avanzar 1 paso más gracias a ti, sin embargo me gustaría que me ayudases a corregir unos pequeños problemas que trae esto:

ElseIf Nombres.Contains(Obligado1.ToLower) And Nombres.Contains(Obligado2.ToLower) Then

Ahí dice que tiene que contener tanto el texto obligado 1 como el 2 pero a mi me gustaría estructurarlo con 1 orden ya que con ese código perfectamente puedo escribir Obligado2 antes que Obligado1 y me gustaría que no fuese así.


El órden que quiero es el siguiente:

Primero el primer texto obligado + Texto de la persona que escribe + Segundo texto obligado + Otro texto de la persona que escribe


Necesito que esté en ese orden y que si siguiese otro orden saliese alguna ventanita de adverténcia como varias que vi que pusistes.
ola k ase

raul338

Si tiene que ser esos strings exactos, puedes usar IndexOf y llamandolo con obligatorio1, obligatorio2,  y despues si quieres con un par de cuentas sacas el texto1 y texto2

ej:

Código (vbnet) [Seleccionar]

' Debe dar 0... o un numero si hay algo antes
pos1 = texto.IndexOf(obligatorio1)
' Debe dar ... 50 por ejemplo, ya que obligatorio tiene un largo de ... 30 (supongamos, ni si quiera lo cuento x'D) y son 20 caracteres que pone el usuario
pos2 = texto.IndexOf(obligatorio2)

' Para saber que esta en orden se verifica
If pos1 < pos2 Then
   'Bien..
Else
   'Incorrecto
End if


Para saber cuales son texto1 haces texto.SubString(pos1 + obligatorio1.length, pos2 - pos1) y vas jugando para sacar texto2 jeje

Porque no pones textboxes exclusivos para poner esos valores en lugar de estar jugando con strings? :P