Etiqueta: Visual Basic

  • Simular discard de C# en Visual Basic

    Pues eso… haciendo pruebas con el conversor de C# a VB de Paul1956 comprobé que los discard de C# (asignación digamos que nula de una función o descartes según la traducción al español ) los generaba usando dos guiones bajo (undercore) y el «asistente» de VS indicó que creara una función para usar ese descarte. Y al ver que es válido usar el nombre __ (dos guiones bajos) como nombre de una función, pensé que también sería válido para una propiedad… de forma que se pudiese haccer ese tipo de asignación.

    Por ejemplo, si tenemos este código de C# en el que se «descarta» el valor devuelto por la función MostrarAyuda:

    class Program
    {
        static void Main(string[] args)
        {
            _ = MostrarAyuda(true, false);
    
            //Console.WriteLine(_);
    
            Console.WriteLine();
            Console.WriteLine("Pulsa una tecla para finalizar.");
            Console.ReadKey();
        }
    
        private static string MostrarAyuda(bool value1, bool value2)
        {
            var s = $"Valores: value1: {value1}, value2: {value2}";
            Console.WriteLine(s);
            return s;
        }
    }
    

    La conversión podría quedar de esta forma:

    Public Shared Sub Main(args As String())
        '__ = MostrarAyuda(True, False)
    
        __ = MostrarAyuda(True, False)
    
        Console.WriteLine(__)
    
        Console.WriteLine()
        Console.WriteLine("Pulsa una tecla para finalizar.")
        Console.ReadKey()
    End Sub
    
    Private Shared Property __ As Object
    
    Private Shared Function MostrarAyuda(value1 As Boolean, value2 As Boolean) As String
        Dim s = $"Valores: value1: {value1}, value2: {value2}"
        Console.WriteLine(s)
        Return s
    End Function
    

    Es un apaño, pero puede valer para equiparar los dos lenguajes.

    Nota:
    Fíjate que en VB al ser una propiedad válida la podemos usar como cualquier otra variable para mostrar el contenido.

    Y esto es todo… a ver si lo implementa y así no dará error cuando se convierta código de C# que tenga ese tipo de asignación (que la implementaron en C# 7.0)

    Nos vemos.
    Guillermo

  • Un reloj para Windows escrito en C# por un VBer que quiere evolucionar (#evolveVB #evolucionarVB)

    Pues eso… Este es un programa muy simple, bueno no tanto, lo que hace principalmente es mostrarte la fecha y la hora, actualizándose para que muestre los segundos, ¡es un reloj! ¡Pero aparte de la hora te muestro también la fecha hombre! 🙂

    Nota del 4-dic-2020:
    Ya está publicado el código de Visual Basic del Reloj Windows.
    convertido del código de C# usando la utilidad CSharpToVB de paul1956.
    Aquí tienes el enlace a Form1.vb en github.

     

    Nota:
    Esto no está repetido.
    Es que lo he creado primero como página y ahora como entrada.
    La página, a la que cambiaré el nombre, es para enlazarla en los proyectos de github, etc.

     

     

    Versión en inglés / English version
    En documentos de Google / In Google’s Documents.

     

    En el código que después te pondré, puedes ver qué es y cómo se puede utilizar como una especie de salvapantalla. Otra de las cosas que le he añadido es que puedas acoplar la pantalla tanto a la izquierda como a la derecha, pero en la parte superior. Cuando se acopla se puede hacer al tamaño que tiene la pantalla actualmente o bien hacerlo a un tamaño mucho más pequeño, todo eso es configurable por medio del menú de opciones. También puede que te interese en el código es que puedes mover la pantalla pulsando sobre la fecha o sobre la hora, además de, por supuesto, pulsando en la barra de título como en cualquier aplicación. Y, aunque no tiene mucho misterio, el que a la ventana se pueda cambiar el nivel de opacidad o transparencia.
    Te voy a pegar el texto que tengo en el menú de ayuda, acerca de, y así no me tengo que acordar de las cosas que le he ido añadiendo a esta aplicación.

     

    El contenido de Acerca de:

    Esta aplicación es un ‘simple’ reloj que te muestra la fecha y la hora en una ventana.

    Te permite controlar dónde verla, si a tamaño normal, a tamaño pequeño, incluso puedes cambiar el tamaño a tu gusto.

    Puedes hacer que esté encima del resto de ventanas.

    Además puedes hacerla menos opaca (más transparente) para que pueda verse lo que hay debajo de la ventana.

    El nivel de transparencia lo puedes controlar a tu gusto, desde casi totalmente transparente a totalmente opaca.

    Puedes usarla también como una especie de salvapantallas (se va desplazando por la pantalla), pero con transparencia con idea de que veas lo que hay debajo sin tener que detener la aplicación.

    Si quieres dejar de ver cómo se mueve por la pantalla, simplemente haz doble-clic en la fecha o en la hora.

    El salvapantallas lo puedes usar a tamaño normal o en tamaño pequeño.

    Cuando funciona como salvapantalla siempre está encima del resto de las ventanas y no muestra la barra de título.

    La ventana la puedes mover desde la barra de título o bien manteniendo el ratón pulsado en la fecha o en la hora.

    También puedes acoplarla en la parte superior izquierda o derecha, en esos casos, se cambia a tamaño mínimo y se hace transparente.

    Y esto es casi todo… creo… en el menú de opciones (en el botón que hay abajo a la derecha) están todas las opciones de uso disponibles.

    ¡Disfrútala! 🙂

    Capturas de la aplicación en funcionamiento

    Aquí te muestro un par de capturas de la aplicación en modo normal y acoplada (que se muestra con transparencia).

    Figura 1. Las opciones y cambiar la opacidad.

     

    Figura 2. Acoplada en la parte superior izquierda (con transparencia)

     

    Figura 3. Lista de las opciones del programa

     

    El código no te lo voy a mostrar aquí, ya que son 680 líneas y no es plan… pero si podrás verlo en Github (ahora te pongo el enlace).

    Este código por ahora está solo para C#, pero intentaré convertirlo para Visual Basic; cuando esté te avisaré o mejor aún, pásate por repositorio de Github y así podrás ver el código completo, de los dos lenguajes (recuerda que ahora mismo solo está el de C#).

    Este es el repositorio de github: elGuille-info/Reloj-Windows: Reloj Windows es una aplicación que muestra la fecha y hora y se puede usar casi como un salvapantalla. Permite acoplarlo a la parte superior derecha o izquierda. (github.com)

    El Documentos de Google pega el enlace con la descripción y todo… ¡mola! (cool!)

    Este ha sido el segundo intento de usar la herramienta Dictado por voz, pero nada, a pesar de que en las sugerencias te dice que puedes decir punto y nueva línea, por ahora, de los signos de puntuación solo me ha reconocido el punto… en fin.

    Y esto es todo… espero que te guste o al menos te sea de utilidad alguna parte del código.

    Nos vemos.
    Guillermo

    P.S.
    Sigo probando con C# y con Documentos de Google para ver si de una vez acaba entendiendo lo que digo 😉 (con el reconocimiento de voz o dictado por voz).

    #evolveVB #evolucionarVB

  • Escribir código en C#. Guía para los developers de Visual Basic

    Pues eso… Ahora que estoy empezando a escribir más programas en C# me doy cuenta de que esto de poner al final de cada sentencia un punto y coma es un poco engorroso. La idea sería que cuando se escribe una línea en C# al pulsar intro en el IDE de Visual Studio automáticamente le agregara el punto y coma al final. Esto lo he puesto como sugerencia en la Developer Community a ver si hacen caso, aunque no sé yo… si quieres ver esa sugerencia (Add automatically the semicolon (;) at the end when writing a new sentence in C# ), sigue el enlace.

    Lo que si me he dado cuenta, o más bien, he confirmado, es que salvo excepciones y algunas características propias, escribir código en C# es casi como en Visual Basic. Por supuesto, si escribes una array debes usar corchetes [] en vez de paréntesis (), debes agregarle a todos los métodos sin parámetros los paréntesis al final, o la forma de escribir un simple if, tienes que acostumbrarte a poner entre paréntesis lo que vayas a comprobar con ese if.

    Después hay cosas que son más raras (C# y otros lenguajes de la misma familia son expertos en esas rarezas que la gente de Visual Basic vemos como ganas de complicarse la vida, jejeje, pero bueno, es cuestión de ir acostumbrándose) por ejemplo el operador ternario de C# que en Visual Basic lo escribimos como un If(comprobación, valor si true, valor si false):

    Dim s = If( valor, "Es True", "Es False")
    dim s = if(valor,  "Es True" , "Es False")

    en C# hay que hacerlo así:

    var s = valor ? "Es True" : "Es False";
    var s = valor ? "Es True" : "Es False";

    Esto asigna a la variable s lo que corresponda, dependiendo de que la variable valor contenga un valor verdadero o falso.

    Viendo el código de VB que te acabo de poner, parece que me contradigo con lo que he comentado de los ifs de C# (que hay que ponerlo entre paréntesis) pero es que este If que he usado en VB es un If especial, y sirve para lo que acabo de explicarte.

    Si queremos usar un If normal podríamos hacerlo de la siguiente forma:

    Dim s = ""
    If valor Then
        s = "Es True"
    Else
        s = "Es False"
    End If
    Dim s = ""
    If valor Then
        s = "Es True"
    Else
        s = "Es False"
    End If
    

    En C# sería algo así (se puede escribir con o sin llaves {}:

    var s = "";
    if( valor )
        s = "Es True";
    else
        s = "Es False";
    var s = "";
    if( valor )
        s = "Es True";
    else
        s = "Es False";
    

    De esta forma, es para cuando después del if o del else solo hay una instrucción, si queremos poner más de una instrucción, debemos usar las llaves:

    var s = "";
    if( valor )
    {
        s = "Es True";
    }
    else
    {
        s = "Es False";
    }
    var s = "";
    if (valor)
    {
        s = "Es True";
    }
    else
    {
        s = "Es False";
    }
    

    Y así… más cosas… como los bucles for, etc.

    No voy a seguir porque no es plan de hacer un curso de cómo hacer las cosas en los dos lenguajes, de todas formas, en mi sitio (www.elguille.info) y en este blog los ejemplos de código que pongo los tengo en los dos lenguajes.

    Y si te interesa saber algunas de las equivalencias entre Visual Basic .NET y C# las puedes encontrar en esta página (en realidad son 3 páginas de equivalencias):

    Equivalencias entre VB.NET y C# (1) (elguille.info)

    Equivalencias entre Visual Basic para .NET y C# (2) (elguille.info)

    Equivalencias entre Visual Basic para .NET y C# (3) (elguille.info)

    En otro momento le echaré un vistazo al contenido completo y veré si añado nuevas cosas, que las hay… ya que la última página la publiqué el 6 de agosto de 2006 y desde entonces (en estos más de 14 años) han salido cosas nuevas que hay que equiparar 😉 

    Y esto es todo por ahora… mañana más (u otro día más).

    Nos vemos.
    Guillermo

    #evolveVB #evolucionarVB

    P.S.
    Escrito en documentos de Google, intentando usar el dictado por voz, pero se ve que no me entiende tan bien o al menos no es mejor de lo que me esperaba… ya que parte de ese texto lo escribí usando Keep y dictándolo, pero como no había forma de añadir los puntos, coma, etc., he intentado con los documentos en la web usando Chrome.
    Seguiré intentándolo… como con C#, a base de probar y probar al final se consigue lo que uno quiere 😉

    P.S.2
    El código en Github:
    elGuille-info/escribir-codigo-en-csharp: Escribir código en C#. Guía para los developers de Visual Basic (github.com)