Autor Tema: [Solucionado] Como desordenar el Contenido de un texbox  (Leído 3473 veces)

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

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
[Solucionado] Como desordenar el Contenido de un texbox
« en: Abril 15, 2010, 12:37:32 pm »
Hola

tengo una duda...
como podria hacer para desordenar el contenido de un texbox.
Me Explico:



osea que se desordenen las lineas y el resultado lo muestre en el texbox2
talves usando la funcion rnd de visual basic

alguien tiene alguna Idea?

Salu2
« última modificación: Abril 16, 2010, 09:23:51 am por NsTeam »

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:[ayuda] Como desordenar el Contenido de un texbox
« Respuesta #1 en: Abril 15, 2010, 10:45:47 pm »
hola mira no esta de lo mas optimizado pero anda, tenes que crear un array con numeros aleatorios segun las lineas que vos tengas el text1 para saber las lineas y tener cada una por separado usas la funcion Split(text1, vbCrLf) y eso te da un array de las lineas del text1 y despues mira el codigo.
Código: (Vb) [Seleccionar]
Option Explicit

Private Sub Command1_Click()
Dim sLine() As String
Dim ArrAleatorio() As Long
Dim i As Long

Text2.Text = ""

sLine = Split(Text1, vbCrLf)


If UBound(sLine) > -1 Then
    ArrAleatorio = GenerateRndArray(UBound(sLine))
   
    For i = 0 To UBound(ArrAleatorio)
        Text2.Text = Text2.Text & sLine(ArrAleatorio(i)) & vbCrLf
    Next
End If
End Sub

Private Function GenerateRndArray(ByVal lMax As Long) As Long()
Dim TempArr() As Long
Dim lPos As Long
Dim RndNum As Long
Dim i As Long
Dim IsInArray As Boolean

If lMax = 0 Then
    ReDim GenerateRndArray(0)
    Exit Function
End If

ReDim TempArr(lMax)

For i = 0 To lMax
    TempArr(i) = -1
Next

Randomize

Do

    IsInArray = False
   
    RndNum = CInt(Int((lMax + 1) * Rnd()))
   
    For i = 0 To lPos
      If TempArr(i) = RndNum Then
          IsInArray = True
          Exit For
      End If
    Next
   
    If IsInArray = False Then
        TempArr(lPos) = RndNum
        lPos = lPos + 1
        If lPos > lMax Then Exit Do
    End If
   
   
Loop

GenerateRndArray = TempArr

End Function


NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Re:[ayuda] Como desordenar el Contenido de un texbox
« Respuesta #2 en: Abril 16, 2010, 09:23:27 am »
hola mira no esta de lo mas optimizado pero anda, tenes que crear un array con numeros aleatorios segun las lineas que vos tengas el text1 para saber las lineas y tener cada una por separado usas la funcion Split(text1, vbCrLf) y eso te da un array de las lineas del text1 y despues mira el codigo.
Código: (Vb) [Seleccionar]
Option Explicit

Private Sub Command1_Click()
Dim sLine() As String
Dim ArrAleatorio() As Long
Dim i As Long

Text2.Text = ""

sLine = Split(Text1, vbCrLf)


If UBound(sLine) > -1 Then
    ArrAleatorio = GenerateRndArray(UBound(sLine))
   
    For i = 0 To UBound(ArrAleatorio)
        Text2.Text = Text2.Text & sLine(ArrAleatorio(i)) & vbCrLf
    Next
End If
End Sub

Private Function GenerateRndArray(ByVal lMax As Long) As Long()
Dim TempArr() As Long
Dim lPos As Long
Dim RndNum As Long
Dim i As Long
Dim IsInArray As Boolean

If lMax = 0 Then
    ReDim GenerateRndArray(0)
    Exit Function
End If

ReDim TempArr(lMax)

For i = 0 To lMax
    TempArr(i) = -1
Next

Randomize

Do

    IsInArray = False
   
    RndNum = CInt(Int((lMax + 1) * Rnd()))
   
    For i = 0 To lPos
      If TempArr(i) = RndNum Then
          IsInArray = True
          Exit For
      End If
    Next
   
    If IsInArray = False Then
        TempArr(lPos) = RndNum
        lPos = lPos + 1
        If lPos > lMax Then Exit Do
    End If
   
   
Loop

GenerateRndArray = TempArr

End Function


gracias man .. me andubo de lujo

Salu2