Archivo

Archive for the ‘C# 4.0’ Category

[C#] El operador ++, prefijo ó sufijo?

julio 2, 2009 4 comentarios

Un post rápido, muchas veces no tomamos en cuenta las especificaciones de los compiladores que usamos, y como mucho aprendimos C# después de usar C o C++, cometemos algunos errores que podemos evitar si leemos un poco. Aquí un ejemplo común, mi compañero Ivan me dice que esto es lo mismo:

int x = 0;
int t = 0;
int y = x++;
int z = ++t;

La pregunta seria ¿los valores de “y” y “z” serán los mismos?.

La respuesta es NO, ¿Por qué?.

R: El incremento prefijo hace que el resultado sea el valor del operando después de haber sido incrementado y el postfijo hace que el resultado sea valor del operando antes de haber sido incrementado.

Entonces si mostramos los valores de “y” y “z”, tenemos que:

y = 0” y “z = 1

Ahora lo que les decía de los compiladores, que pasa si hago esto:

int x = 0;
int y = x++;

¿Cual es el valor de “x” y cual es el valor de “y”?

En base a la respuesta que mencione arriba el valor de “x = 1” y el valor de “y = 0 ”.

Por lo tanto si hago esto:

int x = 0;
x = x++;

El valor de “x = 0”;

Si no me creen pregúntenle al compilador de C#. Por tal motivo puedo concluir que debemos de leer un poco antes de hacer uso de este tipo de operadores, porque muchas veces la solución a nuestro problema puede estar justo al frente de nosotros!.

Etiquetas de Technorati: ,,
Categorías: C#, C# 4.0, Ejemplos, Tips

[RSS] Generando RSS desde una Base de Datos con ASP.NET (C#)

Este es un tema ya un poco trillado, pero vamos a hacer un ejemplo de como leer datos de una tabla, y mostrarlos en una página de .aspx. Bien aquí el como hacerlo.

Primero creamos una tabla (si es que no la tenemos) sencilla que tiene el siguiente diseño:

image

Muy sencilla como pueden observar. Ya con nuestra tabla ingresamos unos cuantos datos. Luego creamos un Sitio Web desde Visual Studio con C#. Lo primero que hacemos es crear nuestra cadena de conexión en nuestro archivo Web.config con las siguiente instrucción:

<connectionStrings>
        <add name="cnx" connectionString="Data source=SQLNOR;
                    initial catalog=BD_DEMOS;
                    User id=******;
                    password=******" 
             providerName="System.Data.SqlClient"/>
    </connectionStrings>

Luego desde el código manejado creamos una función que nos regrese nuestra conexión, ya saben por estética xD, la función es el siguiente:

private SqlConnection miConexion()
   {
       return new SqlConnection(WebConfigurationManager.ConnectionStrings["cnx"].ConnectionString);
   }

Después creamos otra Función para llenar nuestro DataSet, el cual vamos a ocupar para crear el archivo XML que mostrara las RSS, la función de para llenar el DataSet tiene la siguiente estructura:

private DataSet LlenarDataSet()
   {
       SqlConnection cn = miConexion();
       SqlCommand com = new 
           SqlCommand("SELECT Titulo, Descripcion, Link, FechaAdd FROM Entradas", cn);
       cn.Open();
       SqlDataAdapter da = new SqlDataAdapter(com);
       DataSet ds = new DataSet();
       da.Fill(ds);
       com.Dispose();
       cn.Close();
       return ds;
   }

En esta parte y por la sencillez del ejemplo, me pase por alto el colocar TRY-CATCH, el utilizar Using para declarar la conexión,  y coloque directamente una instrucción T-SQL cosa que en una aplicación no se debe de hacer, pero vale que es solo un ejemplo, para que sepan como hacerlo.

Por ultimo tenemos que hacer un método que para crear la estructura del XML de nuestros RSS.

private void getCanalRSS(DataSet ds)
   {
       XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8);
       writer.WriteStartDocument();
       writer.WriteStartElement("rss");
       writer.WriteAttributeString("version", "2.0");
       writer.WriteStartElement("channel");
       writer.WriteElementString("title", "My Content Pipeline");
       writer.WriteElementString("link", "https://mspnor.wordpress.com");
       writer.WriteElementString("description", "Ejemplo del canal de RSS de mi blog");
       writer.WriteElementString("copyright", "(c) 2008, Blog del nor xD.");

       for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
       {
           writer.WriteStartElement("item");
           writer.WriteElementString("title", ds.Tables[0].Rows[i]["Titulo"].ToString());
           writer.WriteElementString("description", ds.Tables[0].Rows[i]["Descripcion"].ToString());
           writer.WriteElementString("link", ds.Tables[0].Rows[i]["Link"].ToString());
           writer.WriteElementString("pubDate", ds.Tables[0].Rows[i]["FechaAdd"].ToString());
           writer.WriteEndElement();
       }
       writer.WriteEndElement();
       writer.WriteEndElement();
       writer.WriteEndDocument();
       writer.Flush();
       writer.Close();
   }

Bueno pues hasta aquí creo que es todo, solo resta colocar esto en el evento Load de nuestra página:

DataSet ds = LlenarDataSet();
        Response.Clear();
        Response.ContentType = "text/xml";
        getCanalRSS(ds);
        Response.End();

Después generar y por ultimo presionar F5 en nuestro teclado xD.

Antes de terminar quiero comentarles que hice la prueba con IE8, Mozilla y Chrome y el resultado fue que Chrome no reconoce los RSS, por los otros 2 todo muy bien. Creo que es todo y espero que les sea de utilidad.

Saludos!

Iralo!…ese!!..@nor

[Tip] Error de Visual Studio “Unable to write to output file”

El día de hoy me ocurrió algo extraño, actualmente estoy trabajando en un sistema para la empresa en la que trabajo y tenemos que liberar el producto en los idiomas de Ingles y Español. Bien pues la versión de Español ya esta lista y comenzando a trabajar en la de Ingles (Que si se hace un buen trabajo y organización, solo es cuestión de cambiar textos y alguna que otra parte de código en lo que a manejo de fechas se refiere), pues bien para que todo funcione bien tengo que trabajar en un ambiente en el idioma Ingles.

Lo que hice es cargar el proyecto y comencé a realizar las modificaciones necesarias y cuando genere la solución para ver que todo iba bien, pues nada que Visual Studio me dice: “Unable to write to output file” que en español seria algo así: “No se puede escribir en el fichero de salida” y en mi caso pues se trataba de la carpeta Obj dentro de la solución.

Al parecer es cuestión de Windows :S, porque copie el proyecto de Windows Vista a Windows XP

Cómo arreglamos el error:

Ir desde el Explorador de Windows hasta la carpeta en cuestión, hacemos clic derecho vemos las propiedades y verificamos que no este activo el checkbox de “Solo lectura” y listo!

La verdad es que no se que pase, porque este error en Windows Vista no aparece, pero bueno aquí este tip para que lo arreglen y puedan seguir trabajando.

Saludos!!

 

[VS – C#] Como agregar un SWF en una aplicación de C# en VS 2005 y no morir en el intento

marzo 26, 2009 3 comentarios

El día de hoy, me encontré con un problema un poco peculiar, les platico lo que hago, el error que me manda Visual Studio y como lo solucione.

Mi intención es agregar un archivo SWF en una aplicación, lo primero al crear mi proyecto es agregar el componente COM de Flash Player, que en mi caso en el visual estudio son dos. Entonces ya saben clic derecho en la Barra de herramientas->Elegir elementos y agrego los siguientes componentes:

  • Shockwave Flash Object
  • Shockwave ActiveX Control

Hasta aquí todo normal, bueno ya me aparecen en mi Barra de herramientas, hago doble clic en los dos y cual es mi sorpresa… . Visual Studio me manda el siguiente error:

image

Cosa que me pareció un tanto extraña, pero vaya mi curiosidad es grande y realice lo mismo. Barra de herramientas->Elegir elementos… y me fije en la ruta que se supone que se encontraba el Componente que es:

C:\Windows\System32\Macromed\Flash

Me dirijo a esa ubicación y me doy cuenta que es problema de que no existe la versión 9, a la que hace referencia Visual Studio, sino que se encuentra la versión 10

image

Entonces desde agregar Componentes, hago clic en Examinar.. me voy a esta ruta y agrego dicho componente

image

Y listo ya puedo trabajar con el control ActiveX para agregar un archivo SWF.

En el siguiente post, les comento trabajar con las propiedades de este control.

Etiquetas de Technorati: ,,,

El Futuro de C# – Conferencia

octubre 28, 2008 Deja un comentario

Si por extrañas razones ajenas a tu voluntad no pudiste asistir al PDC 2008 igual que yo :P, y quieres saber que es lo que te perdiste, gracias a channel 9 podemos ver las conferencias de lo que se va presentado día con día, y esta ves se trata de “The Future of C#” en la que Anders Hejlsberg Él es el jefe de diseño de  C # y participante clave en el desarrollo de la de Microsoft. NET Framework. Desde su lanzamiento inicial en 2000 nos habla de las nuevas características de la versión 4.0 de C#.

image

Aquí la URL para acceder a este vídeo.

http://channel9.msdn.com/pdc2008/TL16/

Etiquetas de Technorati: ,,
Categorías: C#, C# 4.0, PDC 2008

C# 4.0 más cerca de lo que parece

octubre 28, 2008 Deja un comentario

Como muchos ya saben, en esta semana en el PDC 2008, se están mostrando las nuevas tecnologías Microsoft que están por venir, y claro que C# no se puede quedar a tras, así que uno de los padres y arquitecto Anders Hejlsber ha dado el día de ayer un platica sobre la nueva versión de C#, que por lo que puedo leer en algunos blogs, de los presentes en Los Ángeles, se muestran las características de C# 4.0.

Así que, como seguramente cuando con compañeros de trabajo, escuela o conocidos del mundo de desarrollo con .NET, platicaremos, discutiremos o rechazaremos las características de este lenguaje aquí una breve reseña de lo que esta por venir.

Programación Dinámica

C# tendrá un aseria de características dinámicas que permita esta programación dinámica, que son:

  • Objetos tipados de manera dinámica. La clave estará en una nueva palabra clave que aparece en escena: dynamic.
  • Mejorada la interoperabilidad COM.
  • Optinal and named parameters.
  • Co-and Contra-Variance

Tendremos un nuevo runtime para C# 4.0 que nos habilitará esta programación dinámica sobre la base de innovaciones ya existentes como los árboles de expresión y las expresiones lambda de C# 3.0, pero añadiendo nuevas innovaciones:

  • Dynamic trees.
  • Dynamic Dispatch invocer.
  • Call Site Caching.

Todas las características dinámicas de C# 4.0 vendrán en un nuevo ensamblado: System.Dynamic.

Para obtener más detalle, les recomiendo visiten los siguientes link’s.

C# 4.0…el futuro ya está aquí!

sección C# future de MSDN Code Gallery.

Etiquetas de Technorati: ,,
Categorías: Betas, C#, C# 4.0