Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: NsTeam en Abril 15, 2010, 12:37:32 pm
-
Hola
tengo una duda...
como podria hacer para desordenar el contenido de un texbox.
Me Explico:
(http://www.mundoimg.com/imagenes/otros/230285_mundoimg_form.jpg)
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
-
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.
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
-
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.
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