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

#2541
El mejor consejo que te podrán dar: no uses software open-source lleno de bugs extraños e irresolubles como VBox, en su lugar usa software privativo (y con soporte) como VMWare WorkStation / VMWare Player y todos tus problemas con esa máquina virtual se resolverán.

¡Saludos!
#2542
Buenas.

Me interesa descargar este programa:

...Tengo una versión bastante antigua de ese programa, la cual está en Inglés, pero esa nueva versión me aparece por defecto en Ruso o Ucraniano (una de dos, no lo sé exacto), y no sé si es de forma intencionada o es un fallo del autor del programa o que todavía no ha compartido una versión traducida al Inglés. El caso es que me gustaría saber si alguien que sepa Ruso puede hacer el favor de descargar la app y mirar la interfáz de usuario para decirme si se puede cambiar el idioma a Inglés, y cuales son los pasos para hacerlo...

Yo no veo forma de acceder a ningún posible menú de opciones, pero bueno, tampoco sé Ruso así que prefiero asegurarme por alguien que entienda el idioma; para colmo no puedo utilizar la versión antigua que tengo para comparar los textos de la UI (...me caducó el trial).



El executable solo ocupa 4 MB y es portable, no requiere instalacion.

¡Gracias!
#2543
Pausar la ejecución de la consola hasta que se pulse cierta tecla...

Código (vbnet) [Seleccionar]
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Pause the console execution Indefinitely until any key is pressed.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Shared Sub Pause()
    Console.ReadKey(intercept:=True)
End Sub

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Pause the console execution Indefinitely until the specified key is pressed.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="key">
''' The key to wait for.
''' </param>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Shared Sub Pause(ByVal key As Keys)

    Dim keyInfo As ConsoleKeyInfo

    Do Until (keyInfo.Key = key)
        keyInfo = Console.ReadKey(intercept:=True)
    Loop

End Sub


Modo de empleo:
Código (vbnet) [Seleccionar]
Console.WriteLine("Press any key to exit...")
Pause()
Environment.Exit(0)


Código (vbnet) [Seleccionar]
Dim key As Keys = Keys.Enter
Dim keyName As String = [Enum].GetName(GetType(Keys), key)

Console.WriteLine(String.Format("Press '{0}' key to continue...", keyName))
Pause(key)
Console.WriteLine("Well done.")
#2544
El tito Trump cuando no está comiendo tarta de chocolate está bailando, y se lo pasa pipa...

[youtube=640,360]https://www.youtube.com/watch?v=u3k8TfN8UAc[/youtube]
#2545
Cita de: quasares en 12 Abril 2017, 20:58 PMno encuentro motivo para saber porque fue baneada mi cuenta "encuentrosweb"

Cuando te banean, te debería llegar una notificación via e-mail con la razón del baneo, ¿no te ha llegado?.

Al parecer el autor del baneo no ha puesto ninguna razón de baneo... yo personálmente estoy más que harto de que algunos compañeros cierren o eliminen posts sin explicar motivo, o que baneen sin dejar razón alguna.

PD: Yo tampoco he sido.

¡Saludos!
#2546
Hola.

Si quieres algo sofisticado entonces lee sobre el algoritmo Diff y el problema LCS (Longest Common Subsequence) e implementa el algoritmo. Existen librerías Diff gratuitas para .NET por lo que no tienes que hacer practicamente nada.

Aparte, lo que pides se puede interpretar de muchas maneras y se puede implementar de infinitas formas dependiendo de las necesidades del programa, así que como no especifiques un poco más siendo breve y conciso aclarando punto por punto como debería comportarse el algoritmo ante cada situación de coincidencia o no coincidencia pues... vamos mal, jeje.

De todas formas te voy a mostrar dos ejemplos que he escrito con los que te puedas hacer una idea de como implementar un algoritmo básico de comparación de cadenas de texto. Ambos ejemplos evaluan las diferencias y usan un RichTextBox para colorear los caracteres que coinciden y los que no, pero ambos ejemplos tienen propósitos distintos para distintos escenarios... pues como ya dije hay infinitas maneras de implementar esto y depende de las necesidades del programa.






El primer ejemplo está enfocado a la evaluación por individual del caracter actual que se haya escrito en el control de edición, esto quiere decir que si modificas otro caracter no se actualizarán las diferencias/colorización del resto de caracteres en el RichTextBox.

Código (vbnet) [Seleccionar]
Public NotInheritable Class Form1 : Inherits Form

   Private ReadOnly Property OrgText As String = "Hello World!"

   Private ReadOnly Property CurText As String
       Get
           If (Me.RichTextBox1 IsNot Nothing) Then
               Return Me.RichTextBox1.Text
           Else
               Return String.Empty
           End If
       End Get
   End Property

   Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged

       Dim rtb As RichTextBox = DirectCast(sender, RichTextBox)
       Dim chPos As Integer = (rtb.SelectionStart - 1)
       Dim ch As Char = rtb.Text.Substring(chPos, 1)
       Dim diffState As TriState

       If (chPos >= Me.OrgText.Length) Then
           diffState = TriState.UseDefault

       ElseIf (Me.OrgText(chPos) = ch) Then
           diffState = TriState.True

       Else
           diffState = TriState.False

       End If

       ColorizeDifference(rtb, chPos, diffState)

   End Sub

   Friend Shared Sub ColorizeDifference(ByVal rtb As RichTextBox, ByVal charPos As Integer, ByVal diffState As TriState)

       Dim oldSelectionStart As Integer = rtb.SelectionStart
       Dim oldSelectionLength As Integer = rtb.SelectionLength
       Dim fontStyle As FontStyle = rtb.Font.Style

       rtb.SelectionStart = charPos
       rtb.SelectionLength = 1

       Select Case diffState

           Case TriState.True ' El caracter coincide.
               rtb.SelectionColor = Color.YellowGreen
               fontStyle = fontStyle And Not FontStyle.Underline

           Case TriState.False ' El caracter no coincide.
               rtb.SelectionColor = Color.IndianRed
               fontStyle = fontStyle Or FontStyle.Underline

           Case TriState.UseDefault ' El índice del caracter está fuera de rango.
               rtb.SelectionColor = Color.Gray
               fontStyle = fontStyle Or FontStyle.Underline

       End Select

       Using font As New Font(rtb.Font, fontStyle)
           rtb.SelectionFont = font
       End Using

       rtb.SelectionStart = oldSelectionStart
       rtb.SelectionLength = oldSelectionLength
       rtb.ResumeLayout(performLayout:=True)

   End Sub

End Class





El segundo ejemplo está enfocado a la evaluación del texto entero; cada vez que se modifique el texto del RichTextBox se actualizarán las diferencias/colorización de todos los caracteres. Este es el código que he usado en la imagen que he compartido arriba.

Código (vbnet) [Seleccionar]
Public NotInheritable Class Form1 : Inherits Form

   Private ReadOnly Property OrgText As String = "Hello World!"

   Private ReadOnly Property CurText As String
       Get
           If (Me.RichTextBox1 IsNot Nothing) Then
               Return Me.RichTextBox1.Text
           Else
               Return String.Empty
           End If
       End Get
   End Property

   Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged

       Dim diffIndices As Dictionary(Of Integer, TriState) = GetDifferences(Me.OrgText, Me.CurText)
       ColorizeDifferences(Me.RichTextBox1, diffIndices)

   End Sub

   Friend Shared Function GetDifferences(ByVal orgText As String, ByVal curText As String) As IDictionary(Of Integer, TriState)

       Dim orgChars As Char() = orgText.ToArray()
       Dim curChars As Char() = curText.ToArray()

       Dim orgLength As Integer = orgChars.Length
       Dim curLength As Integer = curChars.Length

       Dim diffIndices As New Dictionary(Of Integer, TriState)(curLength, EqualityComparer(Of Integer).Default)

       For i As Integer = 0 To (curLength - 1)

           If (i < orgLength) Then
               diffIndices.Add(i, (orgChars(i) = curChars(i)))

           Else
               diffIndices.Add(i, TriState.UseDefault)

           End If

       Next i

       Return diffIndices

   End Function

   Friend Shared Sub ColorizeDifferences(ByVal rtb As RichTextBox, ByVal diffIndices As IDictionary(Of Integer, TriState))

       Dim oldSelectionStart As Integer = rtb.SelectionStart
       Dim oldSelectionLength As Integer = rtb.SelectionLength
       Dim fontStyle As FontStyle = rtb.Font.Style

       rtb.SuspendLayout()
       For Each kvp As KeyValuePair(Of Integer, TriState) In diffIndices

           rtb.SelectionStart = kvp.Key
           rtb.SelectionLength = 1

           Select Case kvp.Value

               Case TriState.True ' El caracter coincide.
                   rtb.SelectionColor = Color.YellowGreen
                   fontStyle = fontStyle And Not FontStyle.Underline

               Case TriState.False ' El caracter no coincide.
                   rtb.SelectionColor = Color.IndianRed
                   fontStyle = fontStyle Or FontStyle.Underline

               Case TriState.UseDefault ' El índice del caracter está fuera de rango.
                   rtb.SelectionColor = Color.Gray
                   fontStyle = fontStyle Or FontStyle.Underline

           End Select

           Using font As New Font(rtb.Font, fontStyle)
               rtb.SelectionFont = font
           End Using

       Next
       rtb.SelectionStart = oldSelectionStart
       rtb.SelectionLength = oldSelectionLength
       rtb.ResumeLayout(performLayout:=True)

   End Sub

End Class


¡Saludos!
#2547
.NET (C#, VB.NET, ASP) / Re: Codigo QR
12 Abril 2017, 10:30 AM
Hola.

1. Esto va en el foro de Visual Basic.NET, esta duda NO tiene que ver con Visual Basic, lo sabes perfectamente puesto que muchas veces has publicado preguntas en el foro de .NET, así que por favor, que esto no se vuelva a repetir.

2. Revisando todas las preguntas que has formulado en los foros de programación, podemos comprobar que jamás has mediado una sola palabra de agradecimiento ni absolutamente ningún tipo de comentario/respuesta tras obtener la ayuda que pedías por parte mia o por parte de los demás compañeros del foro que te han entregado ayuda en bandeja. Creo que si una persona pide ayuda y se la entregan y le resuelven el problema, lo mínimo que esa persona debería hacer es mostrar gratitud; no seré yo quien te ayude esta vez a hacer tu trabajo... aunque lo que pides es facil.

¡Saludos!
#2548
Cita de: aspiazu en  8 Abril 2017, 19:44 PMComo puedo declarar en una clase uno o mas metodos publicos con los argumentos que quiero?

Y como puedo pasar la variable data y imagenes a ese metodo?

¿Exactamente qué dificultades encuentras a la hora de intentar hacerlo por ti mismo?. Te muestro un ejemplo:

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;

namespace WindowsFormsApplication1 {

   public sealed class FileUtil {

       private FileUtil() {}

        public static IEnumerable<FileInfo> EnumerateFilesByExtension(string dirPath, string searchPattern, SearchOption searchOption,
                                                                      params string[] fileExtensions) {

           foreach (FileInfo item in (from file in new DirectoryInfo(dirPath).EnumerateFiles(searchPattern, searchOption)
                                      where fileExtensions.Contains(file.Extension, StringComparer.OrdinalIgnoreCase)
                                      select file)) {
               yield return item;
           }
       }

   }

}


Modo de empleo:
Código (csharp) [Seleccionar]
IEnumerable<FileInfo> files =
    FileUtil.EnumerateFilesByExtension(@"C:\Directorio\", "*.*", SearchOption.AllDirectories,
                                       new string[] { ".exe", ".lnk", ".png", ".jpg" });

foreach (FileInfo file in files) {

   switch (file.Extension.ToLower()) {
       case ".exe": // Insertar código aquí para procesar archivo .exe
           break;
     
       case ".lnk": // Insertar código aquí para procesar archivo .lnk
           break;
     
       case ".png": // Insertar código aquí para procesar archivo .png
           break;
       
       case ".jpg": // Insertar código aquí para procesar archivo .jpg
           break;
   }
}


¡Saludos!
#2549
Foro Libre / Re: duda trabajo freelance
12 Abril 2017, 03:30 AM
Cita de: doctorman en 12 Abril 2017, 00:55 AMen todas el problema es que estan llenas de muchos usuarios la mayoria de la india y es imposible conseguir el trabajo por tanta gente registrada y con mucha buena reputacion

Se llaman Bots, amigo. Las páginas más populares de oportunidades freelance están infestadas de bots (sobre todo Upwork/oDesk, Elance, y Freelancer.com); evidéntemente fraudulentos (pues no hacen trabajos, simplemente spammean en ofertas para que los "contraten" pagando una "fianza" y tomar el dinero) que le hacen una deshonesta competencia (si es que se le puede llamar competencia) a los usuarios legítimos quienes realmente tienen ganas de aceptar trabajos para los demás.

Lo que te comento no es ninguna conjetura sin argumento, está más que demostrado por todos, puedes buscar reviews en Google e incluso análisis comparativos de cantidad de bots por página, es algo reconocido por las propias empresas/webs de trabajos freelance. Sin ir más lejos hace unos cuantos años lei que los de la web Freelancer.com afirmaban que debido a la inmensa cantidad de usuarios registrados sus sistemas anti-bots no pueden hacer mucho, y esta se considera la página con mayor cantidad de Bots de todas las demás. Yo sinceramente cuando descubrí el monopolio este de los Bots en páginas de trabajos freelance hace ya varios años no he vuelto a interesarme por ese tipo de servicios (me refiero a los más populares, los que están plagados de Bots)... no vale la pena malgastar el tiempo, la voluntad y las ilusiones de uno mismo en ese tipo de páginas, donde puede que a lo mejor 1 de cada 1.000 veces tengas la posibilidad de ser contratado frente a un Bot.
...y a esto de los bots hay que sumarle los usuarios registrados y niños rata que de por si tienen la misma intención que un bot.

Mi consejo: evita cualquier página medio popular de trabajos freelance, ya que cuanto más popular mucha más evidencia de fraudulencia de Bots existirá, y contra miles de bots que están dispuestas a "hacer el trabajo" (o mejor dicho, cobrar por no hacer nada) por menos de la mitad del precio por el que tú lo harias, no hay nada que hacer contra eso... acabarás frustradísimo.

Una buena página de freelance es Guru (http://guru.com/) con mucha menos presencia de Bots, así que tus oportunidades pueden aumentar, pero por contra también tiene menos usuarios registrados y por ende menos ofertas de trabajo.

¡Saludos!
#2550
Hola.

Cita de: RevolucionVegana en 11 Abril 2017, 23:08 PMPanelGeneral es el nombre del objeto que hace de form principal y abrimosPresupuesto() es un método public void que está en PanelGeneral pero que no se ha inicializado

Tú mismo te estás dando la solución: Para poder llamar al método de instancia abrimosPresupuesto() primero debes crear una instancia de la clase donde hayas definido ese método. Eso es lo que te está intentando decir ese mensaje de error:

Código (csharp) [Seleccionar]
public class Class1 {
   public Class1() {}
   public void abrimosPresupuesto() {}
}


Código (csharp) [Seleccionar]
Class1 instance = new Class1();
instance.abrimosPresupuesto();


No hay otra manera, un método de instancia es un método de instancia.

En el caso de que el método abrimosPresupuesto() lo hayas esrito con la intención de poder llamarlo de forma global/rehutilizable, entonces la alternativa sería modificar la accesibilidad de dicho método para poder llamarlo sin instanciar la clase; para ello le asignarías el modificador de acceso static:

Código (csharp,3) [Seleccionar]
public class Class1 {
   public Class1() {}
   public static void abrimosPresupuesto() {}
}


Código (csharp) [Seleccionar]
Class1.abrimosPresupuesto();

...Esto te lo expliqué por encima en el código que compartí en este otro post:

¡Saludos!