Anuncios

Bienvenidos sean a este post, en el post anterior al crear nuestra aplicacion con Visual Studio cuando se genero el codigo en el bloque de Main se nos agrego una variable llamada args.

Anuncios
Anuncios

En realidad esta variable existe en todos los lenguajes de tipo C, en algunos casos puede tener dos variables pero en general como minimo existe una, la cual se encarga de recibir todo lo que pongamos como argumento por detras del programa en la linea de comandos.

En general se tiende a usar el nombre de args para identificarlo pero puede tener cualquier nombre, esta variable es de tipo array y a su vez string (cadena), lo cual nos permite almacenar cualquier dato y la cantidad que sea necesaria , para estudiar el caso de hoy crearemos una nueva aplicacion, para ello deben seleccionar la opcion crear un proyecto:

  • Lenguaje: C#
  • Plataforma: Windows (Net Core)
  • Tipo de Proyecto: Consola
  • Nombre Proyecto: Argumentos
  • Nombre Solucion: Argumentos
Anuncios

Una vez creada nuestra solucion, procederemos a ver nuestro codigo generado automaticamente:

Program.cs

using System;

namespace Argumentos
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Como pueden observar siempre se nos va a generar este codigo de manera predeterminada, si elelgimos como plataforma Net Core, por este motivo vamos a modificarlo de la siguiente manera:

using System;

namespace Argumentos
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Argumento: " + args[0]);
        }
    }
}
Anuncios

En este caso modificamos la linea de mostrar el mensaje de Hello World por la siguiente linea:

Console.WriteLine("Argumento: " + args[0]);
Anuncios

La cual se encargara de mostrarnos el primer argumento despues del ejecutable, en el caso de C# los argumentos comienzan desde cero pero en otros lenguajes, por ejemplo en C++ el argumento cero es el nombre del programa asi que para ver los argumentos deberian comenzar desde uno, con esto establecido podemos probar nuestra solucion, para ello en lugar de ejecutarlo como vimos anteriormente iremos a Compilar -> Compilar Solucion, con esto no ejecutaremos el programa generado sino simplemente lo crearemos, de la misma forma que hicimos con csc.exe anteriormente, para ver donde se creo nuestro programa debemos ir a la ventana de salida y ver donde se compilo, puede aparecer nuestro programa con la extension .dll pero no se preocupen porque al lado esta el .exe, veamos en mi caso:

Anuncios

En este caso la carpeta donde esta nuestro programa es todo el path hasta antes del archivo .dll, en mi caso es asi:

C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1\
Anuncios

Para nuestro siguiente paso deberan abrir un cmd e ir hasta esa carpeta, sera algo asi:

Anuncios

En la primer linea desde la raiz del disco rigido usan cd y luego ponen el path que obtuvieron antes pero sin el c: luego con la barra y todo hasta el final, dan Enter y deberia llevarlos hasta su destino, ahora vamos a probar nuestra aplicacion, primero lo ejecutaremos solamente:

C:\Users\tinchicus\source\repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>Argumentos.exe
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at Argumentos.Program.Main(String[] args) in C:\Users\tinchicus\source\repos\Argumentos\Argumentos\Program.cs:line 8

C:\Users\tinchicus\source\repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Anuncios

Como pueden ver al no pasar ningun argumento nos devolvio un error pero ahora vamos a probarlo con un argumento:

C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1> argumentos prueba
Argumento: prueba

C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Anuncios

Como pueden ver ahora funciono perfecto, no nos devolvio ningun error y nos trajo el argumento en si pero y si tengo mas de un argumento? Veamos el siguiente ejemplo:

C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>argumentos prueba total de fabrica
Argumento: prueba

C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Anuncios

En este caso volvio a fallar pero no por un error sino porque nos ignoro el resto de los argumentos que pasamos, para solucionar esto vamos a ver dos funciones de las cuales ya hemos hablados y para ello modificaremos nuestro codigo de la siguiente manera:

        static void Main(string[] args)
        {
            for(int i=0; i<args.Length; i++)
            {
                Console.WriteLine("Argumento["+ i + "]: " + args[i]);
            }
        }
Anuncios

En este caso les traigo solo el Main donde agregamos un for en conjuncion con la propiedad Length para el array args donde dira cual es el total de elementos en este array, estableciendo con esto el limite del for, luego lo modificamos para que nos muestre la posicion del elemento en args y el valor de esa posicion, volvemos a hacer Compilar->Compilar solucion, volvemos a nuestro cmd y si ejecutamos la ultima accion nuevamente veremos lo siguiente:

C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>argumentos prueba total de fabrica 
Argumento[0]: prueba 
Argumento[1]: total 
Argumento[2]: de 
Argumento[3]: fabrica C:\Users\tinchicus\Source\Repos\Argumentos\Argumentos\bin\Debug\netcoreapp3.1>
Anuncios

Sorpresa! Ahora si nos trajo todos los elementos del array, para las personas que estan familiarizadas con programar puede resultar un juego de niños para los que recien empiezan les puede resultar un poco mas complejo pero si vinieron de los posts anteriores se daran cuenta que mucho de lo ya visto se ira repitiendo de distintas formas, por ultimo veamos el siguiente video con lo realizado

Anuncios

Una ventaja de Visual Studio es que nos permite emular el envio de datos a args por medio de las propiedades del proyecto, para ello van al Explorador de Soluciones, busquen el proyecto, hacen click con el boton derecho y seleccionen Propiedades, esto hara aparecer la ventana de Propiedades.

Anuncios

En este caso debemos ir a la opcion de Depurar y se nos abriran multiples opciones, pero nosotros debemos centrarnos en Opciones de Inicio -> Argumentos de la linea de comandos, en ese cuadro debemos poner todos los parametros que deseamos probar.

Anuncios

Vamos a ver el siguiente video donde haremos todos los pasos para verificarlo

Anuncios

En el video podemos como se utiliza para el momento de la depuracion, especialmente antes de compilarlo, si bien al momento de compilarlo y usar el ejecutable no funciona si nos es util para la verificacion del mismo.

Anuncios

En resumen, hoy hemos visto como trabajar con argumentos para la linea de comandos, como los toma, como los procesa, hemos visto como procesar varios argumentos, un repaso a los ciclos en el lenguaje y como obtener el valor de todos los elementos en un array, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

1.00 $