Quiero hacer un bucle que mire los objetos del array uno a uno y si se pase del rango lo elimine pero que sobreescriva con algun numero dentro del rango 00 /99
en ese espacio y asi consecutivamente ( siempre numerico)
este codigo lo encontre trasteando aca mismo :)pero no logro hacer que funcione que hago mal ?
Dim Result3 as integer
Dim i, j As Integer 'Contadores
For i = 1 To "cantidad de objetos en el array"
If Result3(i) = 99 Then
For j = 1 To "objetos array - i"
If not (i+1) > 12 (i) = Result3(i+1) else: Result3(i) = ""
End If
Next j
End If
Next i
ListBox3.Items.Add(CStr(Result3(X)))
Saludos
Luis
[MOD]Para la próxima inserta correctamente las etiquetas de código.
¿ Que te dije de usar LINQ ?
¿algo como esto te sirve?:
Public Class Form1
ReadOnly MAX As Integer = 100
Public Sub Test() Handles MyBase.Shown
Dim Rand As New Random
Dim result1 As Integer() = {1, 100, 2, 3, 4}
Dim result2 As Integer() = {5, 500, 6, 6, 4}
Dim result3 As Integer() = {7, 8, 9, 10, 99}
' Concateno, y...
' Elimino duplicados, y...
' Selecciono los números inferiores a MAX, y...
' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
Dim Result As IEnumerable(Of Integer) =
(result1.Concat(result2).Concat(result3)).
Distinct.
Select(Function(Value As Integer)
Return If(Value < MAX, Value, Rand.Next(0, MAX))
End Function)
' Result = 1, RANDOM, 2, 3, 4, 5, RANDOM, 6, 7, 8, 9, 10, 99
ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
End Sub
End Class
Saludos!
Cita de: Eleкtro en 15 Enero 2014, 18:19 PM
¿ Que te dije de usar LINQ ?
¿algo como esto te sirve?:
Public Class Form1
ReadOnly MAX As Integer = 100
Public Sub Test() Handles MyBase.Shown
Dim Rand As New Random
Dim result1 As Integer() = {1, 100, 2, 3, 4}
Dim result2 As Integer() = {5, 500, 6, 6, 4}
Dim result3 As Integer() = {7, 8, 9, 10, 99}
' Concateno, y...
' Elimino duplicados, y...
' Selecciono los números inferiores a MAX, y...
' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
Dim Result As IEnumerable(Of Integer) =
(result1.Concat(result2).Concat(result3)).
Distinct.
Select(Function(Value As Integer)
Return If(Value < MAX, Value, Rand.Next(0, MAX))
End Function)
' Result = 1, RANDOM, 2, 3, 4, 5, RANDOM, 6, 7, 8, 9, 10, 99
ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
End Sub
End Class
Saludos!
Gracias como siempre elektro :)
lo estoy probando y me da este error en
ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
No se puede modificar la colección Items cuando está establecida la propiedad DataSource. ?????????????????
SOLUCIONADO CUESTION DE HERENCIA :)
Luis
SOLUCIONADO CUESTION DE HERENCIA :)
Cita de: luis456 en 15 Enero 2014, 20:16 PM
No se puede modificar la colección Items cuando está establecida la propiedad DataSource. ?????????????????
Si estás usando un DataSource debes hacer los cambios en el objeto source, no los puedes hacer diréctamente en el ListBox ...a menos que vuelvas la propiedad a valor nulo.
Compila esto en un nuevo proyecto y fíjate lo que sucede en cada pausa:
Public Class Form1
Dim Source As Integer() = {1, 2, 3}
Private Sub Form1_Load() Handles MyBase.Shown
Dim LB As New ListBox
Me.Controls.Add(LB)
LB.DataSource = Source
Threading.Thread.Sleep(2000) : Application.DoEvents()
Source = {1, 2, 3, 4, 5, 6}
LB.DataSource = Source
Threading.Thread.Sleep(2000) : Application.DoEvents()
LB.DataSource = Nothing
LB.Items.Add(99)
Threading.Thread.Sleep(2000) : Application.DoEvents()
End Sub
End Class
saludos