Título: Eliminar y reemplazar registros en Array
Publicado por: luis456 en 15 Enero 2014, 10:56 am
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.
Título: Re: Eliminar y reemplazar registros en Array
Publicado por: 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!
Título: Re: Eliminar y reemplazar registros en Array
Publicado por: luis456 en 15 Enero 2014, 20:16 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 :)
Título: Re: Eliminar y reemplazar registros en Array
Publicado por: Eleкtro en 15 Enero 2014, 20:40 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
|