Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 15 Enero 2014, 10:56 am



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 ?


Código
  1. Dim Result3 as integer
  2.  
  3. Dim i, j As Integer 'Contadores
  4.  
  5.        For i = 1 To "cantidad de objetos en el array"
  6.            If Result3(i) = 99 Then
  7.                For j = 1 To "objetos array - i"
  8.                    If not (i+1) > 12 (i) = Result3(i+1) else: Result3(i) = ""
  9.                    End If
  10.                Next j
  11.            End If
  12.  
  13.        Next i
  14.  
  15.  
  16. ListBox3.Items.Add(CStr(Result3(X)))
  17.  
  18.  

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?:
Código
  1. Public Class Form1
  2.  
  3.    ReadOnly MAX As Integer = 100
  4.  
  5.    Public Sub Test() Handles MyBase.Shown
  6.  
  7.        Dim Rand As New Random
  8.  
  9.        Dim result1 As Integer() = {1, 100, 2, 3, 4}
  10.        Dim result2 As Integer() = {5, 500, 6, 6, 4}
  11.        Dim result3 As Integer() = {7, 8, 9, 10, 99}
  12.  
  13.        ' Concateno, y...
  14.        ' Elimino duplicados, y...
  15.        ' Selecciono los números inferiores a MAX, y...
  16.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  17.        Dim Result As IEnumerable(Of Integer) =
  18.            (result1.Concat(result2).Concat(result3)).
  19.            Distinct.
  20.            Select(Function(Value As Integer)
  21.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  22.                   End Function)
  23.  
  24.        ' Result = 1, RANDOM, 2, 3, 4, 5, RANDOM, 6, 7, 8, 9, 10, 99
  25.        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
  26.  
  27.    End Sub
  28.  
  29. 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?:
Código
  1. Public Class Form1
  2.  
  3.    ReadOnly MAX As Integer = 100
  4.  
  5.    Public Sub Test() Handles MyBase.Shown
  6.  
  7.        Dim Rand As New Random
  8.  
  9.        Dim result1 As Integer() = {1, 100, 2, 3, 4}
  10.        Dim result2 As Integer() = {5, 500, 6, 6, 4}
  11.        Dim result3 As Integer() = {7, 8, 9, 10, 99}
  12.  
  13.        ' Concateno, y...
  14.        ' Elimino duplicados, y...
  15.        ' Selecciono los números inferiores a MAX, y...
  16.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  17.        Dim Result As IEnumerable(Of Integer) =
  18.            (result1.Concat(result2).Concat(result3)).
  19.            Distinct.
  20.            Select(Function(Value As Integer)
  21.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  22.                   End Function)
  23.  
  24.        ' Result = 1, RANDOM, 2, 3, 4, 5, RANDOM, 6, 7, 8, 9, 10, 99
  25.        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
  26.  
  27.    End Sub
  28.  
  29. 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:
Código
  1. Public Class Form1
  2.  
  3.    Dim Source As Integer() = {1, 2, 3}
  4.  
  5.    Private Sub Form1_Load() Handles MyBase.Shown
  6.  
  7.        Dim LB As New ListBox
  8.        Me.Controls.Add(LB)
  9.  
  10.        LB.DataSource = Source
  11.        Threading.Thread.Sleep(2000) : Application.DoEvents()
  12.  
  13.        Source = {1, 2, 3, 4, 5, 6}
  14.        LB.DataSource = Source
  15.        Threading.Thread.Sleep(2000) : Application.DoEvents()
  16.  
  17.        LB.DataSource = Nothing
  18.        LB.Items.Add(99)
  19.        Threading.Thread.Sleep(2000) : Application.DoEvents()
  20.  
  21.    End Sub
  22.  
  23. End Class

saludos