Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#6211
Me gustaría que aprendieses a hacerlo por ti mismo porque es algo muy básico, pero bueno, aquí tienes:

Código (vbnet) [Seleccionar]

do until...
 ...
 dim list as list(of integer) = values.Concat(constantValues.Skip(skipStart + length + count).Take(1)).ToList
 list.sort()

 combinations.Add(list)
 ...
loop


Saludos
#6212
No veo que hayas hecho nada de lo que te dije en ese código.

Aparte, ¿me vas a decir en que intrucción te da el error?.

En el código que puse arriba, resalté solo 1 linea y es en la que te tienes que fijar (es la misma que está en tu código, tienes que sacarla de ahi meterla en una variable, ordenarla y luego procedes como ya expliqué), por si acaso te digo que no vayas a cambiar de posición estas lineas:
Citar
Código (vbnet) [Seleccionar]
         ' Do Until count = (constantValues.Count - length - skipStart)
          Do Until skipStart = (constantValues.Count - length)

En resumen, deja el código como lo tenias... solo tienes que asignar la lista a una variable y usar el método List.Sort... la lista la tienes en la linea que resalté en el código de mi ultimo comentario...

saludos
#6213
Cita de: luis456 en 31 Octubre 2014, 14:56 PM

Código (vbnet,3) [Seleccionar]
       Do Until skipStart = (constantValues.Count - length)
           ...
           combinations.Add(values.Concat(constantValues.Skip(skipStart + length + count).Take(1)).ToList)
           ...
       Loop


List(Of T).Sort Method - MSDN

Nota: Es un método, no una función, por lo tanto debes asignar la lista a una variable, la ordenas utilizando el método indicado, y ya puedes agregar la lista ordenada a la colección de listas.

Saludos
#6214
Ayer tuve que utilizar el visor de eventos de Windows para obtener información de depuración de un "crash" y me encontré que tenia unos 5.000 registros de todo tipo, un coñazo para eliminarlos uno a uno, y no se pueden eliminar todos a la vez desde la GUI, el CCLEANER no limpia este tipo de basura, así que decidí escribir este pequeño Script en Batch para reciclar los registros.

Quizás a alguien más le sirva de utilidad como complemento de limpieza :P

Código (dos) [Seleccionar]
@Echo OFF & Title Windows EventViewer Log Remover Tool, By Elektro.

Set "SC=%SystemRoot%\System32\SC.exe"
Set "WEVTutil=%SystemRoot%\System32\WEVTutil.exe"

:: Save the current EventViewer service status.
Set "Service.Status="

For /F "Tokens=3 Delims= " %%# In (
'Reg.exe Query "HKLM\SYSTEM\CurrentControlSet\Services\EventLog" /v "Start" ^| Find /I "0x"'
) Do (
If "%%#" EQU "0x2" (Set "Service.Status=auto")
If "%%#" EQU "0x3" (Set "Service.Status=demand")
If "%%#" EQU "0x4" (Set "Service.Status=disabled")
)

( :: Start EventViewer service.
"%SC%" Config "EventLog" start= "demand"
"%SC%" Start  "EventLog"
)1>Nul 2>&1

:: List logs and delete them.
For /F "Delims=" %%# In (
'"%WEVTutil%" EL'
) Do (
Echo %%#
"%WEVTutil%" CL "%%#"
)

( :: Stop and restore EventViewer service status.
"%SC%" Stop   "EventLog"
"%SC%" Config "EventLog" start= "%Service.Status%"
)1>Nul 2>&1

Pause&Exit /B 0


Saludos
#6215
Foro Libre / Re: Mi opinión sobre el bullying
30 Octubre 2014, 19:37 PM
bien dicho

un saludo!
#6216
Software / Re: Problema con Archivo amtlib.dll
30 Octubre 2014, 18:26 PM
Cita de: Zorronde en 30 Octubre 2014, 16:49 PMLa gran pregunta es ¿Porque?

Ponte en el lugar de la compañia (Adobe) que gana millones de beneficios con la venta de su software, y por otro lado un individuo saca un crack que piratea los productos de adobe y le estropea esos beneficios a la compañia (y obviamente la compañia tiene fichados esos cracks tan conocidos), ¿que harías?, pues, entre otras cosas, hacer una petición o comprar el favor de todos los antivirus para que marquen los archivos involucrados en ese "crack" como maliciosos, dando un falso positivo.

Lo que he dicho arriba es lo más probable en mi opinión, pero obviamente no siempre es así, los laboratorios de los AV saben hacer su trabajo sin que los desarrolladores de software tengan que hacerles peticiones para marcar o desmarcar un archivo como posible Virus, de todas formas no hay que estar siempre preocupado por lo que el antivirus te pueda marcar como posible amenaza ni tiene que ser sumamente peligroso para tu PC, hay aplicaciones que las marcan simplemente como "indeseables" (P.U.P, o "Potentially Unwanted Program") o herramientas de hacking (HackTools) pero que no tienen porque causar daños en absoluto en un PC.

Volviendo al tema de tu AV, si lo que te está detectando ahora como virus es un exe de instalación (un instalador) entonces ya no confies tanto... podría ser peligroso, lo mejor es hacer un seguimiento del archivo (mquina virtual + herramientas de seguimiento, o servicios online como -> Anubis <-, etc...), y creo que no hace falta decir que siempre hay que intentar usar internet con cabeza para descargar el programa/crack desde una fuente que consideres confiable, no cualquier torrent que encuentres por ahí.

Saludos
#6217
Software / Re: Problema con Archivo amtlib.dll
30 Octubre 2014, 16:38 PM
Exacto, no hay que preocuparse por ese archivo, es un falso positivo del antivirus

saludos
#6218
¿Es explicitamente necesario usar un array 2D para el ejercicio?, lo comento porque personalmente no apoyo el uso de los array multi-dimensionales en VB.Net ya que realmente un array multi-dimensional no está soportado por la infraestructura de VB.NET (sin ir más lejos ni siquiera los soporta los métodos de la Class Array), en su defecto deberías usar un Array que contenga como elementos otros arrays uni-dimensionales, es decir, un 'Jagged Array' (dim arr()() as Integer) y el ordenamiento sería mucho más sencillo, pero en este caso específico deberías olvidarte de eso ya que lo mejor que deberías hacer es crear tu propio objeto para añadir los datos y usarlo en un array uni-dimensional.

Además, implementar la interface IComparer para comparar/ordenar con ese array 2D que tienes con dos datatypes diferentes (integer, string) resulta algo tedioso engorroso.

Y aparte, los índices en .NET empiezan por 0, no por 1, estás dejando elementos vacios y si te acostumbras a eso provocarás errores en tiempo de ejecución al intentar acceder a esos elementos vacios en el futuro.

Podría haberte escrito un ejemplo utilizando Arrays multi-dimensionales o Array de arrays (Jagged Array) pero ya que me pongo a escribir he preferido hacerlo utilizando el modo que considero más óptimo y esperando que no te sea completamente necesario la utilización de Array 2D, espero que te sirva.

Puedes adaptar el código a tus necesidades:

Código (vbnet) [Seleccionar]
Public NotInheritable Class MyData : Implements IComparable(Of MyData)

   ''' <summary>
   ''' </summary>
   Public Property Index As Integer

   ''' <summary>
   ''' </summary>
   Public Property Value As Integer

   ''' <summary>
   ''' </summary>
   Public Property Condition As String

   ''' <summary>
   ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/system.icomparable.compareto%28v=vs.110%29.aspx
   ''' Compares the current instance with another object of the same type
   ''' and returns an integer that indicates whether the current instance precedes,
   ''' follows, or occurs in the same position in the sort order as the other object.
   ''' </summary>
   ''' <param name="obj">An object to compare with this instance.</param>
   ''' <returns> A value that indicates the relative order of the objects being compared.</returns>
   Public Overloads Function CompareTo(ByVal obj As MyData) As Integer _
   Implements IComparable(Of MyData).CompareTo

       Return Value.CompareTo(obj.Value)

   End Function

End Class


Código (vbnet) [Seleccionar]
Module Module1

   ''' <summary>
   ''' Defines the entry point of the application.
   ''' </summary>
   Friend Sub Main()

       Dim data() As MyData = AddData(4)

       ' Unsorted
       PrintData(data)
       Console.ReadKey()

       ' Sorted
       Array.Sort(data)
       PrintData(data)
       Console.ReadKey()

   End Sub

   ''' <summary>
   ''' Adds the data.
   ''' </summary>
   ''' <param name="count">The item count to create.</param>
   Public Function AddData(ByVal count As Integer) As MyData()

       If count <= 0 Then
           Throw New ArgumentException("Parameter value can't be zero or negative", "count")
           Return Nothing
       End If

       Dim data(count) As MyData
       Dim value As Integer
       Dim condition As String

       For index As Integer = 0 To count

           Console.Write(String.Format("Escriba el valor para el vector {0}º: ",
                                       CStr(index)))

           Try
               value = Console.ReadLine

           Catch ex As Exception
               Throw

           End Try

           Select Case value

               Case Is < 0
                   condition = "menor que cero"

               Case Is > 0
                   condition = "mayor que cero"

               Case Else ' Is = 0
                   condition = "igual a cero"

           End Select

           data(index) = New MyData With
                             {
                               .Index = index,
                               .Value = value,
                               .Condition = condition
                             }

       Next index

       Return data

   End Function

   ''' <summary>
   ''' Prints the data.
   ''' </summary>
   ''' <param name="data">The data.</param>
   Private Sub PrintData(ByVal data() As MyData)

       Dim sum As Integer =
           (From item As MyData In data
            Select item.Value).Sum

       For Each item As MyData In data

           Console.WriteLine(String.Format("Valor ingresado en el vector {0} = {1} y es {2}",
                                           CStr(item.Index), CStr(item.Value), item.Condition))

       Next item

       Console.WriteLine(String.Format("Suma de los valores ingresados: {0}",
                                       CStr(sum)))

   End Sub

End Module







EDITO:
He escrito este ejemplo para demostrarte como lo podrías hacer con un Array 2D, está un poco hardcodeado... no es de uso genérico, y no te recomiendo usar este método ya que un Array 2D no es el "Contenedor" más apropiado para tus intenciones, siempre hay que buscar el Type/Contenedor más adecuado para cada situación...

Código (vbnet) [Seleccionar]
Class CustomArrayComparer : Implements IComparer

    ' Maintain a reference to the 2D array being sorted.
    Private sortedArray(,) As String

    Public Sub New(ByVal array(,))
        sortedArray = array
    End Sub

    ''' <summary>
    ''' Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.
    ''' </summary>
    ''' <param name="x">The first object to compare.</param>
    ''' <param name="y">The second object to compare.</param>
    ''' <returns>
    ''' A signed integer that indicates the relative values of <paramref name="x"/> and <paramref name="y"/>,
    ''' </returns>
    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
    Implements IComparer.Compare

        ' x and y are integer row numbers into the sortArray
        Dim i1 As Integer = DirectCast(x, Integer)
        Dim i2 As Integer = DirectCast(y, Integer)

        ' compare the items in the sortArray
        Return sortedArray(i1, 0).CompareTo(sortedArray(i2, 0))

    End Function

End Class


Código (vbnet) [Seleccionar]
Module Module1

    ''' <summary>
    ''' Defines the entry point of the application.
    ''' </summary>
    Friend Sub Main()

        Dim data(,) As String = AddData(Of String)(4, 1)

        ' Unsorted
        PrintData(data) : Console.ReadKey()

        ' Sorted
        PrintDataSorted(data) : Console.ReadKey()

    End Sub

    ''' <summary>
    ''' Adds the data.
    ''' </summary>
    Public Function AddData(Of T)(ByVal d1Size As Integer,
                                  ByVal d2Size As Integer) As T(,)

        If d1Size <= 0 Then
            Throw New ArgumentException("Parameter value can't be zero or negative", "d1Size")
            Return Nothing

        ElseIf d2Size <= 0 Then
            Throw New ArgumentException("Parameter value can't be zero or negative", "d2Size")
            Return Nothing

        End If

        Dim data(d1Size, d2Size) As T ' As String
        Dim value As Integer
        Dim condition As T

        For index As Integer = 0 To d1Size

            Console.Write(String.Format("Escriba el valor para el vector {0}º: ",
                                        CStr(index)))

            Try
                value = CInt(Console.ReadLine)

            Catch ex As Exception
                Throw

            End Try

            Select Case value

                Case Is < 0
                    condition = CType(CObj("menor que cero"), T)

                Case Is > 0
                    condition = CType(CObj("mayor que cero"), T)

                Case Else ' Is = 0
                    condition =CType(CObj("igual a cero"), T)

            End Select

            data(index, 0) = CType(CObj(value), T)
            data(index, 1) = CType(CObj(condition), T)

        Next index

        Return data

    End Function

    ''' <summary>
    ''' Prints the data.
    ''' </summary>
    Private Sub PrintData(Of T)(ByVal data As T(,))

        Dim sum As Integer

        For index As Integer = 0 To (data.GetLength(0) - 1)

            Dim value As Integer = Convert.ToInt32(data(index, 0))
            Dim condition As String = Convert.ToString(data(index, 1))
            sum += value

            Console.WriteLine(String.Format("Valor ingresado en el vector {0} = {1} y es {2}",
                                            CStr(index), CStr(value), condition))

        Next index

        Console.WriteLine(String.Format("Suma de los valores ingresados: {0}",
                                        CStr(sum)))

    End Sub

    ''' <summary>
    ''' Prints the data sorted.
    ''' </summary>
    Private Sub PrintDataSorted(Of T)(ByVal data As T(,))

        Dim sum As Integer

        Dim taggedArray() As Integer =
            (From value As Integer
             In Enumerable.Range(0, data.GetLength(0))
             Select value).ToArray

        ' Initialize the comparer and sort
        Dim myComparer As New CustomArrayComparer(data)
        Array.Sort(taggedArray, myComparer)

        For index As Integer = 0 To (taggedArray.Length - 1)

            Dim value As Integer = Convert.ToInt32(data(taggedArray(index), 0))
            Dim condition As String = Convert.ToString(data(taggedArray(index), 1))
            sum += value

            Console.WriteLine(String.Format("Valor ingresado en el vector {0} = {1} y es {2}",
                                            CStr(index), CStr(value), condition))

        Next index

        Console.WriteLine(String.Format("Suma de los valores ingresados: {0}",
                                        CStr(sum)))

    End Sub

End Module


Saludos
#6219
Scripting / Re: TUTORIAL vbscript
30 Octubre 2014, 08:51 AM
Cita de: Nogard Mishima en 30 Octubre 2014, 06:59 AMlo que  se escribe en el inputbox aparece en el msgbox, lo que quisiera saber es como guardar en un archivo .txt lo que aparece en el msgbox.
De antemano gracias y espero haberme explicado bien.

Un hilo sobre un tutorial no es lugar para desviar el tema con otro tipo de preguntas que no están relacionadas con el tema principal.

Formula tu pregunta en un nuevo post.

Cierro el tema, a menos que NovLucker quiera que se reabra por cualquier motivo
#6220
Aparentemente pareciste insinuar que la idea serviría para no desvirtuar el contenido del foro pero hay un subforo libre donde opinar sobre cualquier cosa y solo quise resaltar esa contrariedad, aunque, entiendo que no es lo mismo disponer de una web dedicada a cierta temática que usar un subforo de una página de informática, por otro lado yo soy habitual en otra comunidad gigantesca donde puedo resolver mis dudas científicas (si las tuviera, no por ser listo, sino porque no se me ocurre ninguna duda), aunque dicha comunidad solo sirve para eso, para formular preguntas xD

Te deseo suerte si armais esa web

saludos