20080510

Un archivo fuente... un assembly bien identificado

Junto con una nueva solución o un nuevo proyecto, Visual Studio genera automáticamente el archivo AssemblyInfo.cs en la carpeta de propiedades del proyecto (Properties). Sin embargo, no es necesario tener este archivo para poder identificar bien el assembly generado. Basta con agregar las líneas correspondientes al archivo fuente de la aplicación de la manera que se muestra a continuación:

using System;
using System.IO;
using System.Reflection;
[assembly: AssemblyTitle("AplicacionConsola")]
[assembly: AssemblyDescription("Aplicacion Tipo Consola")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("XYZ")]
[assembly: AssemblyProduct("AplicacionConsola")]
[assembly: AssemblyCopyright("Copyright © XYZ 2008")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
namespace AplicacionConsola
{
class Program
{
static void Main()
{
Console.WriteLine("Presione cualquier tecla para finalizar");
Console.ReadKey(true);
}

}
}

Es importante agregar la referencia a la librería System.Reflection en el encabezado del archivo fuente para poder usar la directiva [assembly:...].

20080327

Línea x línea: del archivo a la pantalla

En esta oportunidad utilizaremos la clase System.IO.StreamReader para leer un archivo de texto línea por línea y mostrar cada una en la consola del sistema. Para ello crearemos una aplicación tipo consola y lo primero que debemos hacer es incluir el espacio de nombres (namespace) System.IO.

Luego, en el método Main declaramos un objeto sr de tipo StreamReader y una variable linea de tipo string donde almacenaremos el valor de la línea que vayamos leyendo. Inicializaremos el objeto sr pasándole como parámetro la ruta del archivo que vamos a leer (en este caso: C:\archivo.txt). Esto automáticamente abrirá el archivo en modo lectura posicionará un apuntador al principio del mismo.

Leemos la siguiente línea del archivo ( linea=sr.ReadLine() ) mientras sea diferente de null y la escribimos en la consola mediante el método WriteLine() del objeto Console. Cada vez que se ejecute ReadLine(), el objeto sr devolverá la línea en donde está posicionado el apuntador y lo moverá a la siguiente.

Por último, cerramos el archivo mediante la instrucción sr.Close().

using System;
using System.IO;

namespace AplicacionConsola
{
class Program
{
static void Main()
{
StreamReader sr = new StreamReader(@"C:\archivo.txt");
string linea;
while((linea = sr.ReadLine()) != null)
{
Console.WriteLine(linea);
}
sr.Close();
Console.ReadKey(true);
}
}
}

La instrucción Console.ReadKey(true) permite detener la ejecución del programa hasta que se presione una tecla.

Trucos:

  • Pasar true como parámetro al método Console.ReadKey() hace que la tecla pulsada no tenga eco en la pantalla ;)
  • En C# las cadenas de caracteres funcionan igual que en C/C++/Java, por lo que para obtener \ debemos utilizar \\. Sin embargo, en C# existe la posibilidad de especificar que se tome el contenido de la cadena tal como está dentro de las comillas y esto se logra anteponiendo un @ a la literal.
  • Si no cerramos el archivo mediante sr.Close(), este quedará abierto en el sistema y podría ocasionar molestias a la hora de -digamos- mover el archivo a otra carpeta o intentar eliminarlo.

20080323

Acerca de C#

Comencemos por el principio, C# (léase si-sharp) es un lenguaje de programación orientado a objetos desarrollado por Microsoft para la plataforma .NET, y que luego fue aprobado como estándar por la ISO (International Organization for Standarization) y la ECMA (European Computer Manufacturers Association). Está diseñado para combinar el poder de los lenguajes de bajo nivel con la facilidad y rapidez de los lenguajes de alto nivel. Su sintaxis deriva de los lenguajes de programación C/C++ y Java y el númeral deriva de superponer ++ sobre ++ ;)

Actualmente el lenguaje sólo existe para plataforma .NET pero no sólo sobre Windows sino también en Linux, Solaris, Mac OS X and Unix con el proyecto mono patrocinado por Novell.