elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 944
91  Sistemas Operativos / Windows / Re: PATH Windows 8 en: 11 Abril 2017, 06:13
Valor por defecto:
Código:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;

EDITO: Y para Python, simplemente añades la ruta al directorio donde tengas el archivo py.exe, en la variable de entorno PATH.

PD: La próxima vez, usa Google.

¡Saludos!
92  Programación / .NET / Re: Almacenar en variable un valor entero con MySqlDataReader en: 10 Abril 2017, 12:28
me da error en int rangoUser = (int) rd["rango"];

¿Qué tipo de excepción y con que mensaje de error?. No somos adivinos.

¡Saludos!
93  Programación / .NET / Re: Clase para conexión a base de datos C# en: 9 Abril 2017, 20:05
dentro de la clase he creado el método ConectarYa y he puesto que no retorne nada, es correcto o tiene que retornar algo?

me gustaría saber si hace falta que esa clase retorne algo o como va la cosa

La clase que estás instanciando, MySqlConnection, representa la conexión a la base de datos MySql que vas a abrir, y además es una clase disposable (utiliza recursos no administrados que deberían ser liberados cuando ya no se los necesite usar más), con esto ya tienes dos motivos fundamentales por los cuales deberías devolver la instancia de esa clase.



Había pensado en poner return HacerConexion.Open() pero no sabría de que tipo es el retorno

Estás en Visual Studio, la IDE más completa y sofisticada en el mundo de la programación (¡tenlo presente!), ante la duda tan solo tienes que posicionar el puntero del ratón sobre el nombre del miembro ("Open") y la característica Intellisense de Microsoft te mostrará un tooltip diciéndote de que tipo es el miembro, o en caso de una función que tipo de valor de retorno devuelve... en este caso ninguno, puesto que MySqlConnection.Open() es un método sin valor de retorno.



he creado una clase para hacer la conexión a la base de datos y poder reutilizarla cuantas veces quiera

Código
  1. class ConexionDB

Una clase cuyo propósito sea proveer métodos de uso genérico, por lo general debe ser una clase "sellada" (es decir, no heredable).
sealed class ConexionDB

Además deberías declarar un constructor de accesibilidad privada para impedir que la clase pueda ser instanciada por equivocación. [/quote]
private ConexionDB() { }

Código
  1. public void ConectarYa()

Y por ese último motivo que acabo de mencionar, los métodos de uso genérico deberían tener una accesibilidad global.
public static void ConectarYa()

En general aquí abajo te muestro buenas prácticas de diseño que se deberían seguir según lo estipula en las directrices de diseño de Microsoft:

Código
  1. #region " usings "
  2.  
  3. using System.Diagnostics;
  4. using MySql.Data.MySqlClient;
  5.  
  6. #endregion
  7.  
  8. namespace MySqlUtils {
  9.  
  10.    /// <summary>
  11.    /// Contains helper methods for a <c>MySQL</c> database.
  12.    /// </summary>
  13.    public sealed class DatabaseHelper {
  14.  
  15.        #region " Constructors "
  16.  
  17.        [DebuggerNonUserCode()]
  18.        private DatabaseHelper() { }
  19.  
  20.        #endregion
  21.  
  22.        #region " Public Methods "
  23.  
  24.        /// ----------------------------------------------------------------------------------------------------
  25.        /// <summary>
  26.        /// Establishes a connection to a <c>MySQL</c> Server database using the specified connection string.
  27.        /// </summary>
  28.        /// ----------------------------------------------------------------------------------------------------
  29.        /// <example> This is a code example.
  30.        /// <code>
  31.        /// using (MySqlConnection connection = GetConnection("server=localhost; userid=x; password=x; database=x")) {
  32.        ///     // ...
  33.        /// }
  34.        /// </code>
  35.        /// </example>
  36.        /// ----------------------------------------------------------------------------------------------------
  37.        /// <param name="connectionString">
  38.        /// The connection string used to open the <c>MySQL</c> database.
  39.        /// </param>
  40.        /// ----------------------------------------------------------------------------------------------------
  41.        /// <returns>
  42.        /// A <see cref="MySqlConnection"/> instance that represents the connection established with the <see cref="MySQL"/> database.
  43.        /// </returns>
  44.        /// ----------------------------------------------------------------------------------------------------
  45.        [DebuggerStepThrough()]
  46.        public static MySqlConnection GetConnection(string connectionString) {
  47.  
  48.            MySqlConnection connection = new MySqlConnection(connectionString);
  49.            connection.Open();
  50.            return connection;
  51.  
  52.        }
  53.  
  54.        #endregion
  55.  
  56.    }
  57.  
  58. }

Ejemplo de llamada:
Código
  1. MySqlConnection db = MySqlUtil.DatabaseHelper.GetConnection("MySQL query");

Si intentas hacer las cosas más o menos similar entonces estarás avanzando a pasos de gigante en el "nivel principiante", la estructurización/diseño es fundamental, te ayudará en todo, sobre todo a ser mas analítico o metódico. La documentación Xml es muy util y recomendable pero bueno si te parece algo muy tedioso de realizar entonces lo puedes ignorar, yo es que soy un maniático y un cansino del perfeccionismo, pero no te fijes en los tochos de documentación sino en la estructurización de todo lo demás... y en las nomenclaturas de los miembros, muy importante también (deberías intentar no escribir absolutamente nada en Español... ¡ni siquiera los commentarios!)

PD: Esto ha sido solo un consejo personal para intentar ayudarte un poco a que descubras como poder mejorar tus modelos, es mi opinión la cual se puede aceptar o rechazar sin problema; ¡que cada cual aprenda a programar como prefiera!.

¡Saludos!
94  Programación / .NET / Re: Filtro en un DataGridView en: 9 Abril 2017, 17:24
Realmente lo que necesitamos es que se oculten las filas que no coinciden con lo buscado y que la búsqueda sea al escribir en el TextBox.

Aquí abajo te muestro otra alternativa de hacerlo. En caso de que lo uses, adáptalo a tus necesidades.

Código
  1. Public NotInheritable Class Form1 : Inherits Form
  2.  
  3.    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
  4.  
  5.        Me.TriggerFindText(DirectCast(sender, TextBox), Me.DataGridView1)
  6.  
  7.    End Sub
  8.  
  9.    Private Sub TriggerFindText(ByVal tb As TextBox, ByVal dgv As DataGridView)
  10.  
  11.        ' Cuando se dispara el evento TextBox.TextChanged, guardamos el texto actual en una variable,
  12.        ' esperamos 300-500 ms approx. y verificamos si el texto sigue siendo el mismo o ha cambiado.
  13.        ' De esta manera evitamos realizar búsquedas indeseadas (términos de búsqueda incompletos) mientras el usuario está escribiendo.
  14.        ' Util también si tenemos miles de filas en el datagridview, para evitar bloqueos en el thread de la UI.
  15.  
  16.       ' Como es evidente, esta metodología está pensada para una búsqueda en "tiempo real";
  17.       ' Si prefieres iniciar la búsqueda solamente cuando se presione la tecla "Enter" entonces esta metodología no tienes por que usarla...
  18.  
  19.        Dim t As New Task(
  20.            Sub()
  21.                Dim oldText As String = tb.Text
  22.                Dim newText As String
  23.                Thread.Sleep(400)
  24.  
  25.                newText = tb.Text
  26.                If String.IsNullOrEmpty(newText) Then
  27.                    ShowAllRowsInDataGridView(dgv)
  28.  
  29.                ElseIf (oldText = newText) Then
  30.                    FindTextInDataGridView(dgv, tb.Text, StringComparison.OrdinalIgnoreCase)
  31.  
  32.                Else ' (oldText <> newText)
  33.                    ' El texto ha cambiado, así que no hacemos nada.
  34.  
  35.                End If
  36.  
  37.            End Sub)
  38.  
  39.        t.Start()
  40.  
  41.    End Sub
  42.  
  43.    Friend Shared Sub ShowAllRowsInDataGridView(ByVal dgv As DataGridView)
  44.  
  45.        If (dgv.InvokeRequired) Then
  46.            dgv.Invoke(New Action(Sub() ShowAllRowsInDataGridView(dgv)))
  47.        End If
  48.  
  49.        dgv.SuspendLayout()
  50.        For Each row As DataGridViewRow In dgv.Rows
  51.            If Not (row.IsNewRow) Then
  52.                row.Visible = True
  53.            End If
  54.        Next row
  55.        dgv.ResumeLayout(performLayout:=True)
  56.  
  57.    End Sub
  58.  
  59.    Friend Shared Sub FindTextInDataGridView(ByVal dgv As DataGridView, ByVal str As String, ByVal stringComparison As StringComparison)
  60.  
  61.        If (dgv.InvokeRequired) Then
  62.            dgv.Invoke(New Action(Sub() FindTextInDataGridView(dgv, str, stringComparison)))
  63.        End If
  64.  
  65.        Dim cellContainsFunc As Func(Of DataGridViewCell, String, Boolean) =
  66.            Function(ByVal cell As DataGridViewCell, s As String)
  67.                If (cell.Value IsNot Nothing) Then
  68.                    Return (cell.Value.ToString().IndexOf(s, stringComparison) <> -1)
  69.                Else
  70.                    Return False
  71.                End If
  72.            End Function
  73.  
  74.        Dim indices As IEnumerable(Of Integer) =
  75.            (From row As DataGridViewRow In dgv.Rows
  76.             Where row.Cells.Cast(Of DataGridViewCell).Any(Function(x As DataGridViewCell) cellContainsFunc(x, str))
  77.             Select row.Index)
  78.  
  79.        dgv.SuspendLayout()
  80.        dgv.ClearSelection()
  81.        For Each row As DataGridViewRow In dgv.Rows
  82.            If Not (row.IsNewRow) Then
  83.                row.Visible = indices.Contains(row.Index)
  84.            End If
  85.        Next row
  86.        dgv.ResumeLayout(performLayout:=True)
  87.  
  88.    End Sub
  89.  
  90. End Class

¡Saludos!
95  Foros Generales / Foro Libre / Re: ¿Algún entendido en apuestas de baloncesto y Hándicap? en: 9 Abril 2017, 09:51
Hmmm... creo que tienen razón en lo que dicen en el video.

Que un experto me corrija, por favor:

Teniendo este partido como antes:
-10 Equipo_A  vs. Equipo_B +10

Si yo apuesto en ese momento al Hándicap del Equipo_A, es decir -10, y suponiendo que el resultado final sea Equipo_A=91 puntos y Equipo_B=80 puntos, la condición para que la apuesta resulte ganadora es que al descontar el Hándicap de los puntos del Equipo_A, es decir 91-10=81, esos puntos sigan siendo mayor a los puntos del otro equipo, y en este caso habría ganado la apuesta con 81 puntos por encima de los 80 puntos del otro equipo.
O lo que viene a ser lo mismo, que el equipo por el que he apostado siga teniendo el mismo Hándicap o un Hándicap mayor (ej. -12) al terminar el partido.

Vamos, que no tenía que ver tanto con el valor negativo del Hándicap como yo creia, ¿verdad?.

PD: Aclaro que me estoy refiriendo a apuestas en directo, el Hándicap varía a cada momento según la diferencia de puntos entre los equipos, el equipo con más puntos tiene un mayor Hándicap -negativo.

¡Saludos
96  Foros Generales / Foro Libre / ¿Algún entendido en apuestas de baloncesto y Hándicap? en: 9 Abril 2017, 09:00
Hola.

A ver si por casualidad hay algún aficionado al baloncesto en el foro y que sepa un poco de apuestas de baloncesto para poder resolver una duda básica que tengo...

Vamos a ver, tomando este partido como ejemplo:

-10 Equipo_A  vs. Equipo_B +10

Si yo apuesto en ese momento al Hándicap del Equipo_A, es decir -10, ¿cuales son las condiciones que se tienen que dar en el marcador final de puntos del partido para que mi apuesta resulte ganadora?.

Si yo apuesto por el Equipo_A con ese Hándicap de -10 puntos, lo que pienso o lo que interpreto desde mi completa ignorancia es que para que la apuesta resulte ganadora la única condición que se ha de dar es que el Hándicap del Equipo_A se mantenga en un valor negativo (-1) hasta el final del partido. Por ese motivo, yo lo que hago es esperar hasta la mitad del 4º tiempo del partido y si uno de los equipos tiene un Hándicap de digamos -20 puntos (de lo contrario no apuesto por ninguno de los equipos, diréctamente ignoro el partido), apuesto a ese equipo, y gano la apuesta (por que no le llegan a meter 20 puntos al equipo por el que yo aposté), esto no me ha fallado en las apuestas que he echo hasta ahora, pero creo que a pesar de estar ganando consecutivamente quizás sea la suerte del novato y no lo estoy haciendo bien ...con sensatéz, por que no sé muy bien a lo que estoy apostando la verdad, quizás me estoy equivocando con mi interpretación del Hándicap en las apuestas de baloncesto.

Quiero aclarar que no tengo demasiado claro el concepto del Hándicap, y he mirado el siguiente video pero sigo teniendo mis dudas al respecto:



...y digo que tengo dudas despues de haber visto el video, por que lo que se explica en ese video (la suma/resta en el marcador final de puntos) en mi opinión no concuerda con lo que yo he visto en las apuestas que he ganado, o tal vez si, ¡no sé!, yo solo veo que solo gano la apuesta si apuesto por un equipo con un buen hándicap negativo (ej. -20) y si ese hándicap se mantiene en valor negativo la apuesta sale vencida. Tengo la cabeza echa un lío. Vuelvo a repetir la pregunta:

Si yo apuesto en ese momento al Hándicap del Equipo_A, es decir -10, ¿cuales son las condiciones que se tienen que dar en el marcador final de puntos del partido para que mi apuesta resulte ganadora?.

Gracias por adelantado.
97  Programación / .NET / Re: optimizar codigo foreach en: 8 Abril 2017, 16:58
como puedo hacer que busque png y jpg? y lo mismo con exe y lnk?

En el caso de que Unity permita el uso de LINQ (.NET Framework +3.5):

Código
  1. DirectoryInfo dir = new DirectoryInfo(@"C:\Directory\");
  2. IEnumerable<FileInfo> files =
  3.    from file in dir.EnumerateFiles("*.*", SearchOption.AllDirectories)
  4.    where new string[] { ".png", ".jpg" }.Contains(file.Extension, StringComparer.OrdinalIgnoreCase)
  5.    select file;
  6.  
  7. foreach (FileInfo file in files) {
  8.    Console.WriteLine(file.FullName);
  9. }

En el caso contrario:
Código
  1. DirectoryInfo dir = new DirectoryInfo(@"C:\Directory\");
  2. FileInfo[] files =
  3.    Array.FindAll(dir.GetFiles("*.*", SearchOption.AllDirectories),
  4.                  file => new string[] { ".png",".jpg" }.Contains(file.Extension, StringComparer.OrdinalIgnoreCase));
  5.  
  6. foreach (FileInfo file in files) {
  7.    Console.WriteLine(file.FullName);
  8. }

¡Saludos!
98  Sistemas Operativos / Windows / Re: Desinstalación silenciosa, Como? en: 8 Abril 2017, 15:08
La que estás liando, jeje.

supongo que hay una forma mas profesional de hacer una desinstalacion desatendida.

Para llevar a cabo una desinstalación desatendida ya no de forma profesional, sino de forma sensata, lo primero que debiste hacer es documentarte sobre los argumentos command-line que acepta el tipo de desinstalador en cuestión; no es necesario llevar a cabo metodologías rebuscadas con la API de Windows, tan solo buscar información sobre cual es la forma guiada que un installer-builder proporciona para desinstalar un producto de forma desatendida.



Los archivos con nombre "unins000" hacen referencia a un desinstalador creado por el installer-builder Inno Setup, por ende puedes pasarle el argumento /s o también /silent (ambos argumentos completamente en minúscula) para desinstalarlo de forma silenciosa:
Código:
"unins000.exe" /silent

...Esto seguirá mostrando la UI, pero sin interacción con el usuario. Si quieres ocultar la ventana es decisión tuya.



Cita de: LeandroA
"C:\ProgramData\Package Cache\{246dcb72-b18c-4ab9-9de9-8a996296b01d}\vcredist_x86.exe"  /uninstall

Para los desinstaladores de Microsoft (MSI) en la mayoría de los casos puedes utilizar la siguiente sintaxis:
Código:
"vcredist_x86.exe"  /uninstall /quiet
Código:
"setup.msi"         /uninstall /quiet

...Puedes reemplazar el argumento /quiet por /passive si prefieres mostrar una UI con el progreso de desinstalación, sin interacción con el usuario.

Puedes llamar al desinstalador pasándole el argumento "/?" para mostrar los argumentos disponibles por defecto:
Código:
"setup.msi" /?

...Ten en cuenta que eso no incluye argumentos creados por el autor del instalador.



Cita de: LeandroA
MsiExec.exe /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}

Para una desinstalación usando la versión command-line de MSI, MsiExec.exe, puedes usar la siguiente sintaxis:

Código:
MsiExec.exe /quiet /X {1D8E6291-B0D5-35EC-8441-6616F567A0F7}

...y de nuevo también puedes pasarle el argumento /passive si lo prefieres.



Cita de: LeandroA
C:\Program Files (x86)\InstallShield Installation Information\{9D3D8C60-A5EF-4123-B2B9-172095903AB}\Install.exe -uninst -l0xA

Para los desinstaladores de InstallShield se requiere un poco más de esfuerzo realizando el siguiente paso previo a la desinstalación:



Etcétera con el resto de tipos de instaladores. Si no estás seguro de a que tipo de instalador pertenece un executable, puedes intentar pasarle argumentos de ayuda al executable a ver si te muestra algo (-h | --h | -help | --help | /?) o puedes analizar el PE con cualquier software dedicado a ello como por ejemplo TridNet o PEInfo, y a partir de eso cuando averigues el tipo de instalador te documentas en Google sobre los argumentos de desinstalación desatendida, o diréctamente en la web del producto.



No se porque movieron el tema a este foro si era de programacion no buco un progama de terceros

Yo no moví el post, pero aunque el planteamiento inicial de tu pregunta estuvo enfocada a la programación, en mi opinión (desde mi punto de vista personal) la solución no tiene que ver con la programación, sino más bien con el entendimiento del uso básico de un software dedicado a la creación de instaladores, lo cual se podría catalogar como una duda de software bajo Windows (desde mi punto de vista personal, insisto).

¡Saludos!
99  Programación / Programación General / Re: Aprender a programar en: 8 Abril 2017, 02:15
idiomas

podeis dar algun consejo

Hola.

Mi primer consejo es que en lo referente a la programación debes intentar empezar a hablar con propiedad de la palabra. Si vas a una entrevista de trabajo y dices que sabes 3 idiomas y uno de ellos es Python, te van a tomar por burro.

Según la RAE, el término Idioma se refiere sólamente a la lengua verbal de un pueblo o nación.

Esto no son idiomas, son lenguajes de programación.



uso un teclado de los pequeños inalambricos y no puedo hacer los ejercicios de while a causa de que no encuento el simbolo "<" xD.

Pues empezamos bien...

Si vas a introducirte en el inmenso mundo de la programación, cómprate un teclado normal que disponga de un acceso fácil a los típicos símbolos reservados que comparten la mayoría de lenguajes de programación. < > ( ) { } / \ [ ] = + - * # " ' % etc...

No sé que sentido puede tener darte ningún consejo en plan serio sobre la programación mientras sigas limitándote a ti mismo de esa manera, ya que no puedes programar si no puedes escribir la sintaxis del lenguaje...



Aprendiendo python me seria mas facil aprender después otros idiomas?

Te facilitaría la comprensión al manejo de otros lenguajes de la misma manera que si aprendieras cualquier otro lenguaje de programación. Simplemente irías con algunos conceptos aprendidos.

Python es una buena elección para empezar, pero no caigas en el error de atribuirle a Python la etiqueta de "el mejor lenguaje", no hay ningún "mejor lenguaje".

¡Saludos!
100  Programación / .NET / Re: Librería de Snippets para VB.Net !! (Compartan aquí sus snippets) en: 7 Abril 2017, 06:16
Determinar si dos colores son similares

Código
  1.    ''' ----------------------------------------------------------------------------------------------------
  2.    ''' <summary>
  3.    ''' Determines whether two colors are similar.
  4.    ''' <para></para>
  5.    ''' It compares the RGB channel differences to match inside the range of the specified tolerance values.
  6.    ''' </summary>
  7.    ''' ----------------------------------------------------------------------------------------------------
  8.    ''' <param name="color1">
  9.    ''' The first color to compare.
  10.    ''' </param>
  11.    '''
  12.    ''' <param name="color2">
  13.    ''' The second color to compare.
  14.    ''' </param>
  15.    '''
  16.    ''' <param name="toleranceR">
  17.    ''' The tolerance of the Red color channel.
  18.    ''' From 0 to 255.
  19.    ''' </param>
  20.    '''
  21.    ''' <param name="toleranceG">
  22.    ''' The tolerance of the Green color channel.
  23.    ''' From 0 to 255.
  24.    ''' </param>
  25.    '''
  26.    ''' <param name="toleranceB">
  27.    ''' The tolerance of the Blue color channel.
  28.    ''' From 0 to 255.
  29.    ''' </param>
  30.    ''' ----------------------------------------------------------------------------------------------------
  31.    ''' <returns>
  32.    ''' <see langword="True"/> if the colors are similar,
  33.    ''' this means the RGB differences matches inside the range of the specified tolerance value,
  34.    ''' <see langword="False"/> otherwise.
  35.    ''' </returns>
  36.    ''' ----------------------------------------------------------------------------------------------------
  37.    Public Shared Function IsColorSimilar(ByVal color1 As Color, ByVal color2 As Color,
  38.                                          ByVal toleranceR As Byte, ByVal toleranceG As Byte, ByVal toleranceB As Byte) As Boolean
  39.  
  40.        Return Math.Abs(CInt(color1.R) - color2.R) <= toleranceR AndAlso
  41.               Math.Abs(CInt(color1.G) - color2.G) <= toleranceG AndAlso
  42.               Math.Abs(CInt(color1.B) - color2.B) <= toleranceB
  43.  
  44.    End Function

Modo de empleo:
Código
  1. Dim areSimilar As Boolean = IsColorSimilar(Color.FromArgb(0, 0, 0), Color.FromArgb(0, 0, 1),
  2.                                           toleranceR:=0, toleranceG:=0, toleranceB:=1)
  3. ' Result: True

Código
  1.    ''' ----------------------------------------------------------------------------------------------------
  2.    ''' <summary>
  3.    ''' Determines whether two colors are similar.
  4.    ''' <para></para>
  5.    ''' It compares the RGB channel difference to match inside the range of the specified tolerance value.
  6.    ''' </summary>
  7.    ''' ----------------------------------------------------------------------------------------------------
  8.    ''' <param name="color1">
  9.    ''' The first color to compare.
  10.    ''' </param>
  11.    '''
  12.    ''' <param name="color2">
  13.    ''' The second color to compare.
  14.    ''' </param>
  15.    '''
  16.    ''' <param name="tolerance">
  17.    ''' The global tolerance of the RGB color channels.
  18.    ''' From 0 to 255.
  19.    ''' </param>
  20.    ''' ----------------------------------------------------------------------------------------------------
  21.    ''' <returns>
  22.    ''' <see langword="True"/> if the colors are similar,
  23.    ''' this means the RGB differences matches inside the range of the specified tolerance value,
  24.    ''' <see langword="False"/> otherwise.
  25.    ''' </returns>
  26.    ''' ----------------------------------------------------------------------------------------------------
  27.    Public Shared Function IsColorSimilar(ByVal color1 As Color, ByVal color2 As Color, ByVal tolerance As Byte) As Boolean
  28.  
  29.        Return (Math.Abs(CInt(color1.R) - color2.R) +
  30.                Math.Abs(CInt(color1.G) - color2.G) +
  31.                Math.Abs(CInt(color1.B) - color2.B)) <= tolerance
  32.  
  33.    End Function

Modo de empleo :

Código
  1. Dim result1 As Boolean = IsColorSimilar(Color.FromArgb(0, 0, 0), Color.FromArgb(0, 0, 1), tolerance:=1)
  2. ' Result: True
  3. '  Logic: Blue channel difference = 1, which is equal than the specified tolerance value.
  4.  
  5. Dim result2 As Boolean = IsColorSimilar(Color.FromArgb(0, 0, 0), Color.FromArgb(0, 1, 1), tolerance:=1)
  6. ' Result: False
  7. '  Logic: Red channel + Blue channel differences = 2, which is a bigger value than the specified tolerance value.



Voltear una imagen

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' Specifies a flip type operation to perform for an image.
  4. ''' </summary>
  5. ''' ----------------------------------------------------------------------------------------------------
  6. Public Enum FlipType As Integer
  7.  
  8.    ''' <summary>
  9.    ''' Horizontal flip.
  10.    ''' </summary>
  11.    Horizontal = 1
  12.  
  13.    ''' <summary>
  14.    ''' Vertical flip.
  15.    ''' </summary>
  16.    Vertical = 2
  17.  
  18.    ''' <summary>
  19.    ''' Both a horizontal and vertical flip.
  20.    ''' </summary>
  21.    Both = 3
  22.  
  23. End Enum
  24.  
  25. public module ImageExtensions
  26.  
  27. ''' ----------------------------------------------------------------------------------------------------
  28. ''' <summary>
  29. ''' Flips an <see cref="Image"/>.
  30. ''' </summary>
  31. ''' ----------------------------------------------------------------------------------------------------
  32. ''' <param name="sender">
  33. ''' The source <see cref="Image"/>.
  34. ''' </param>
  35. '''
  36. ''' <param name="fliptype">
  37. ''' The flip type operation to perform.
  38. ''' </param>
  39. ''' ----------------------------------------------------------------------------------------------------
  40. ''' <returns>
  41. ''' The resulting <see cref="Image"/>.
  42. ''' </returns>
  43. ''' ----------------------------------------------------------------------------------------------------
  44. <Extension>
  45. <DebuggerStepThrough>
  46. <EditorBrowsable(EditorBrowsableState.Always)>
  47. Public Function Flip(ByVal sender As Image, ByVal fliptype As FlipType) As Image
  48.  
  49.    Dim flippedImage As New Bitmap(sender.Width, sender.Height, sender.PixelFormat)
  50.  
  51.    Using g As Graphics = Graphics.FromImage(flippedImage)
  52.  
  53.        Dim m As Matrix = Nothing
  54.        Select Case fliptype
  55.            Case FlipType.Horizontal
  56.                m = New Matrix(-1, 0, 0, 1, 0, 0)
  57.                m.Translate(flippedImage.Width, 0, MatrixOrder.Append)
  58.  
  59.            Case FlipType.Vertical
  60.                m = New Matrix(1, 0, 0, -1, 0, 0)
  61.                m.Translate(0, flippedImage.Height, MatrixOrder.Append)
  62.  
  63.            Case FlipType.Both
  64.                m = New Matrix(-1, 0, 0, -1, 0, 0)
  65.                m.Translate(flippedImage.Width, flippedImage.Height, MatrixOrder.Append)
  66.        End Select
  67.  
  68.        ' Draw
  69.        g.Transform = m
  70.        g.DrawImage(sender, 0, 0)
  71.  
  72.        'clean up
  73.        m.Dispose()
  74.    End Using
  75.  
  76.    Return flippedImage
  77.  
  78. End Function
  79.  
  80. end module

Modo de empleo:

Código
  1. dim img as image = image.fromfile("C:\file.png")
  2. dim flipped as image=  imf.Flip(FlipType.Vertical)



Cifrado XOR

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' Encrypts or decrypts a string using XOR algorithm.
  4. ''' </summary>
  5. ''' ----------------------------------------------------------------------------------------------------
  6. ''' <param name="text">
  7. ''' The text to encrypt.
  8. ''' </param>
  9. '''
  10. ''' <param name="key">
  11. ''' The key to use for encryption of decryption.
  12. ''' </param>
  13. ''' ----------------------------------------------------------------------------------------------------
  14. ''' <returns>
  15. ''' The encrypted string.
  16. ''' </returns>
  17. ''' ----------------------------------------------------------------------------------------------------
  18. <DebuggerStepThrough>
  19. Public Shared Function XorEncryptOrDecrypt(ByVal text As String, ByVal key As Integer) As String
  20.  
  21.    Dim sb As New StringBuilder(text.Length, text.Length)
  22.    For Each c As Char In text
  23.        ' Get the ASCII value of the character.
  24.        Dim charValue As Integer = Convert.ToInt32(c)
  25.        ' XOR the value.
  26.        charValue = (charValue Xor key)
  27.        ' Convert back to string.
  28.        sb.Append(Char.ConvertFromUtf32(charValue))
  29.    Next
  30.  
  31.    Return sb.ToString()
  32.  
  33. End Function

Modo de empleo:
Código
  1. Dim str As String = "Hello World"
  2. Dim encrypted As String = XorEncryptOrDecrypt(str, 1)       ' Result: "Idmmn!Vnsme"
  3. Dim decrypted As String = XorEncryptOrDecrypt(encrypted, 1) ' Result: "Hello World"



Obtener un array con los bytes del archivo de la aplicación actual

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' Gets the bytes of the local file that points to the running assembly.
  4. ''' </summary>
  5. ''' ----------------------------------------------------------------------------------------------------
  6. ''' <value>
  7. ''' A <see cref="Byte()"/> array containing the bytes of the local file that points to the running assembly.
  8. ''' </value>
  9. ''' ----------------------------------------------------------------------------------------------------
  10. Public Shared ReadOnly Property SelfBytes As Byte()
  11.    <DebuggerStepThrough>
  12.    Get
  13.        Using fs As FileStream = File.OpenRead(System.Windows.Forms.Application.ExecutablePath)
  14.            Dim exeBytes As Byte() = New Byte(CInt(fs.Length - 1)) {}
  15.            fs.Read(exeBytes, 0, exeBytes.Length)
  16.            Return exeBytes
  17.        End Using
  18.    End Get
  19. End Property

Modo de empleo:
Código
  1. Dim selfBytes As Byte() = SelfBytes()



Obtener recursos embedidos en un ensamblado .NET

Código
  1. Partial Public NotInheritable Class ResourceUtil
  2.  
  3.    ''' ----------------------------------------------------------------------------------------------------
  4.    ''' <summary>
  5.    ''' Gets an embedded resource in the specified <see cref="Assembly"/>.
  6.    ''' </summary>
  7.    ''' ----------------------------------------------------------------------------------------------------
  8.    ''' <param name="name">
  9.    ''' The name of the resource.
  10.    ''' </param>
  11.    '''
  12.    ''' <param name="ass">
  13.    ''' The <see cref="Assembly"/> to look for the resource.
  14.    ''' </param>
  15.    ''' ----------------------------------------------------------------------------------------------------
  16.    ''' <returns>
  17.    ''' A <see cref="Byte()"/> array containing the bytes of the embedded resource.
  18.    ''' </returns>
  19.    ''' ----------------------------------------------------------------------------------------------------
  20.    Public Shared Function GetEmbeddedResource(ByVal name As String, ByVal ass As Assembly) As Byte()
  21.  
  22.        name = ResourceUtil.FormatResourceName(name, ass)
  23.  
  24.        Using resx As Stream = ass.GetManifestResourceStream(name)
  25.  
  26.            If (resx Is Nothing) Then
  27.                Throw New Exception("Resource not found in the specified .NET assembly.")
  28.  
  29.            Else
  30.                Dim content As Byte() = New Byte(CInt(resx.Length - 1)) {}
  31.                resx.Read(content, 0, content.Length)
  32.                Return content
  33.  
  34.            End If
  35.  
  36.        End Using
  37.  
  38.    End Function
  39.  
  40.    ''' ----------------------------------------------------------------------------------------------------
  41.    ''' <summary>
  42.    ''' Gets an embedded resource in the calling assembly.
  43.    ''' </summary>
  44.    ''' ----------------------------------------------------------------------------------------------------
  45.    ''' <param name="name">
  46.    ''' The name of the resource.
  47.    ''' </param>
  48.    ''' ----------------------------------------------------------------------------------------------------
  49.    ''' <returns>
  50.    ''' A <see cref="Byte()"/> array containing the bytes of the embedded resource.
  51.    ''' </returns>
  52.    ''' ----------------------------------------------------------------------------------------------------
  53.    Public Shared Function GetEmbeddedResource(ByVal name As String) As Byte()
  54.  
  55.        Return ResourceUtil.GetEmbeddedResource(name, Assembly.GetCallingAssembly())
  56.  
  57.    End Function
  58.  
  59.    ''' ----------------------------------------------------------------------------------------------------
  60.    ''' <summary>
  61.    ''' Gets an embedded resource of type <see cref="String"/> in the specified <see cref="Assembly"/>.
  62.    ''' </summary>
  63.    ''' ----------------------------------------------------------------------------------------------------
  64.    ''' <param name="name">
  65.    ''' The name of the resource.
  66.    ''' </param>
  67.    '''
  68.    ''' <param name="ass">
  69.    ''' The <see cref="Assembly"/> to look for the resource.
  70.    ''' </param>
  71.    ''' ----------------------------------------------------------------------------------------------------
  72.    ''' <returns>
  73.    ''' The embedded resource as <see cref="String"/>.
  74.    ''' </returns>
  75.    ''' ----------------------------------------------------------------------------------------------------
  76.    Public Shared Function GetEmbeddedResourceAsString(ByVal name As String, ByVal ass As Assembly, Optional ByVal enc As Encoding = Nothing) As String
  77.  
  78.        If (enc Is Nothing) Then
  79.            enc = Encoding.Default
  80.        End If
  81.  
  82.        name = ResourceUtil.FormatResourceName(name, ass)
  83.  
  84.        Using resx As Stream = ass.GetManifestResourceStream(name)
  85.  
  86.            If (resx Is Nothing) Then
  87.                Throw New Exception("Resource not found in the specified .NET assembly.")
  88.            Else
  89.                Using reader As New StreamReader(resx, enc)
  90.                    Return reader.ReadToEnd()
  91.                End Using
  92.            End If
  93.  
  94.        End Using
  95.  
  96.    End Function
  97.  
  98.    ''' ----------------------------------------------------------------------------------------------------
  99.    ''' <summary>
  100.    ''' Gets an embedded resource of type <see cref="String"/> in the calling assembly.
  101.    ''' </summary>
  102.    ''' ----------------------------------------------------------------------------------------------------
  103.    ''' <param name="name">
  104.    ''' The name of the resource.
  105.    ''' </param>
  106.    ''' ----------------------------------------------------------------------------------------------------
  107.    ''' <returns>
  108.    ''' The embedded resource as <see cref="String"/>.
  109.    ''' </returns>
  110.    ''' ----------------------------------------------------------------------------------------------------
  111.    Public Shared Function GetEmbeddedResourceAsString(ByVal name As String, Optional ByVal enc As Encoding = Nothing) As String
  112.  
  113.        Return ResourceUtil.GetEmbeddedResourceAsString(name, Assembly.GetCallingAssembly(), enc)
  114.  
  115.    End Function
  116.  
  117.    ''' ----------------------------------------------------------------------------------------------------
  118.    ''' <summary>
  119.    ''' Gets an embedded resource of type <see cref="Image"/> in the specified <see cref="Assembly"/>.
  120.    ''' </summary>
  121.    ''' ----------------------------------------------------------------------------------------------------
  122.    ''' <param name="name">
  123.    ''' The name of the resource.
  124.    ''' </param>
  125.    '''
  126.    ''' <param name="ass">
  127.    ''' The <see cref="Assembly"/> to look for the resource.
  128.    ''' </param>
  129.    ''' ----------------------------------------------------------------------------------------------------
  130.    ''' <returns>
  131.    ''' The embedded resource as <see cref="Image"/>.
  132.    ''' </returns>
  133.    ''' ----------------------------------------------------------------------------------------------------
  134.    Public Shared Function GetEmbeddedResourceAsImage(ByVal name As String, ByVal ass As Assembly) As Image
  135.  
  136.        name = ResourceUtil.FormatResourceName(name, ass)
  137.  
  138.        Using resx As Stream = ass.GetManifestResourceStream(name)
  139.  
  140.            If (resx Is Nothing) Then
  141.                Throw New Exception("Resource not found in the specified .NET assembly.")
  142.            Else
  143.                Using ms As New MemoryStream()
  144.                    resx.CopyTo(ms)
  145.                    Return Image.FromStream(ms)
  146.                End Using
  147.  
  148.            End If
  149.  
  150.        End Using
  151.  
  152.    End Function
  153.  
  154.    ''' ----------------------------------------------------------------------------------------------------
  155.    ''' <summary>
  156.    ''' Gets an embedded resource of type <see cref="Image"/> in the calling assembly.
  157.    ''' </summary>
  158.    ''' ----------------------------------------------------------------------------------------------------
  159.    ''' <param name="name">
  160.    ''' The name of the resource.
  161.    ''' </param>
  162.    ''' ----------------------------------------------------------------------------------------------------
  163.    ''' <returns>
  164.    ''' The embedded resource as <see cref="Image"/>.
  165.    ''' </returns>
  166.    ''' ----------------------------------------------------------------------------------------------------
  167.    Public Shared Function GetEmbeddedResourceAsImage(ByVal name As String) As Image
  168.  
  169.        Return ResourceUtil.GetEmbeddedResourceAsImage(name, Assembly.GetCallingAssembly())
  170.  
  171.    End Function
  172.  
  173.    ''' ----------------------------------------------------------------------------------------------------
  174.    ''' <summary>
  175.    ''' Formats a resource name.
  176.    ''' </summary>
  177.    ''' ----------------------------------------------------------------------------------------------------
  178.    ''' <param name="name">
  179.    ''' The name of the resource.
  180.    ''' </param>
  181.    '''
  182.    ''' <param name="ass">
  183.    ''' The assembly that contains the resource.
  184.    ''' </param>
  185.    ''' ----------------------------------------------------------------------------------------------------
  186.    ''' <returns>
  187.    ''' The resulting formatted resource name.
  188.    ''' </returns>
  189.    ''' ----------------------------------------------------------------------------------------------------
  190.    Private Shared Function FormatResourceName(ByVal name As String, ByVal ass As Assembly) As String
  191.  
  192.        Return String.Format("{0}.{1}", ass.GetName().Name, name.Replace(" ", "_").
  193.                                                                 Replace("\", ".").
  194.                                                                 Replace("/", "."))
  195.  
  196.    End Function
  197.  
  198. End Class

Ejemplo de uso para la aplicación actual:
Código
  1. Dim data As Byte() = GetEmbeddedResource("file.txt")
  2. Dim dataAsString As String = Encoding.Default.GetString(data)
  3.  
  4. Dim str As String = GetEmbeddedResourceAsString("file.txt", Encoding.Default)
  5.  
  6. Dim img As Image = GetEmbeddedResourceAsImage("file.png")

Ejemplo de uso con un ensamblado específico:
Código
  1. Dim data As Byte() = GetEmbeddedResource("file.txt", Assembly.GetCallingAssembly())
  2. Dim dataAsString As String = Encoding.Default.GetString(data)
  3.  
  4. Dim str As String = GetEmbeddedResourceAsString("file.txt", Assembly.GetCallingAssembly(), Encoding.Default)
  5.  
  6. Dim img As Image = GetEmbeddedResourceAsImage("file.png", Assembly.GetCallingAssembly())



Todas estas funcionalidades y muchísimas más las podrán encontrar en mi Framework ElektroKit.
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 944
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines