Trabajando con direcciones…

A veces en nuestros proyectos, los usuarios deben ingresar un dirección URL, para ello sería conveniente comprobar si es correcta, y de ser así, de que tipo es (HTTP, FTP, etc.), por eso os dejo aquí unos pequeños trucos para trabajar con ellas.

¿Qué clase es la indicada para este trabajo?

Se trata de la clase System.Uri. Esta clase contiene una serie de métodos compartidos para trabajar con direcciones y además si creamos una instancia de ella, podemos saber más cosas de la dirección.

¿Cómo podemos comprobar si una dirección es correcta?

Para ello, tenemos que usar el método compartido System.Uri.IsWellFormedUriString. Este método compartido tiene dos parámetros: uriString y uriKind. Al primero le debemos dar la cadena de la dirección, y al segundo le tenemos que señalar lo "permisivo" que será con esa dirección, explico esto con un ejemplo. Lo correcto sería poner: http://www.microsoft.es, aunque www.microsoft.es también sería válido (a la hora de navegar con nuestro explorador), por ello si queremos que la segunda opción sea válida le debemos poner UriKind.Relative y si queremos que no sea válido le debemos poner UriKind.Absolute.

¿Y si ahora queremos saber que tipo de dirección es?

Para ello debemos crear una instancia de la clase System.Uri.

Dim ObjUri As New System.Uri(URL)

Una vez que lo tengamos creado, tenemos que obtener el scheme, para ello recomiendo usar un Select Case ya que así podemos comparar con todos los esquemas:

Select Case ObjUri.Scheme
   Case Uri.UriSchemeHttp

   Case Uri.UriSchemeHttps

   Case Uri.UriSchemeFtp

   Case Uri.UriSchemeFile

   Case
Uri.UriSchemeMailto
End Select


Puse los mas conocidos pero podéis encontrar más dentro de System.Uri.

Último ejemplo…

Como último ejemplo voy a hacer una función de tipo System.Boolean que lo que hará es válidar si una URL es de tipo HTTP o HTTPs:

Public Function Validar(ByVal URL As String) As Boolean

    'Comprobamos si la dirección es correcta, en caso de no ser así devolvemos False y salimos de la función.

    If Not System.Uri.IsWellFormedUriString(URL, UriKind.Absolute) Then

        Return False

        Exit Function

    End If

    'Instanciamos la clase Uri para poder comprobar el scheme.

    Dim objUri As Uri = New Uri(URL)

    'Y ahora comprobamos si es de tipo HTTP o HTTPs

    If objUri.Scheme = Uri.UriSchemeHttp Or objUri.Scheme = Uri.UriSchemeHttps Then

        Return True

        Exit Function

    Else

        Return False

    End If

End Function

Espero que os sea útil 😉

¿3 versiones de SQL Server 2005 Express?

La verdad… no se si es que soy despistado y hasta ahora no me di cuenta, o esto es una novedad… yo por si acaso os lo cuento.

Hoy navegaba por las páginas de MSDN (English version), en concreto las de Visual Studio Express Edition y me encontre leyendo en la página de SQL Server 2005 Express Edition que el SQL Server 2005 Express SP1 tenía tres (3) versiones para descargar:

 Y la utilidad:

 Pero eso no es todo. También te hablan de una comparativa entre las versiones Express en la que nos encontramos estas características:

SQL Server Express Family Features

Feature SQL Server 2005 Express Edition SQL Server 2005 Express Edition with Advanced SQL Server 2005 Express Edition Toolkit
Database Engine
Client Components
 
Full Text Search
Reporting Services
Management Studio Express
Business Intelligence Developer Studio

 

Además tenemos para descargar desde las páginas de descarga:

Pues eso es todo, para mi es una novedad, pero insisto, puede que yo me haya despistado.

Instalando Atlas CTP July

 

Ayer a la tarde instalé la versión CTP July de Atlas. Y bueno… no he tenido ningún problema para instalarla.

Los pasos que seguí han sido muy sencillos:

  1. Desinstalar la antigua CTP que tenía instalada
  2. Instalar la nueva

De momento no he tenido tiempo de explorarla a fondo, pero la única novedad que he visto de momento es que durante la instalación registra una nueva extensión en el IIS.

 Pronto os informaré de está nueva CTP.

VB y C#, una equivalencia que ha pasado desapercibida

Leyendo las Equivalencias entre Visual Basic .NET y C# de elGuille me encontré con que faltaba una, se trata de una comparativa, el select case en VB y el switch en C#.


Esto es lo que debería de añadir elGuille 😉


Visual Basic .NET

Select Case x

   Case 10

      ‘…

   Case 20

      ‘…

   Case Else

      ‘…

End Select

 

C#

 

switch (x)

{

   case 10:

      //…

      break;

   case 20:

      //…

      break;

   default:

      //…

      break;

}


Esperemos que sea la única 😛

 

Una costumbre en VB que C# no nos permite

Esta tarde, un amigo, me comentaba que, que estaba empezando con C#, y se encontraba con que le generaba errores en el designer.cs, sabiendo que viene de VB, me imaginé al momento cuál era su error. Os lo voy a razonar como intenté razonarselo a él.


¿Cómo manejamos un evento en VB?


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


End Sub


Y… ¿en C#?


private void Form1_Load(object sender, EventArgs e)


{


}


¿Cuál es la diferencia?


Espero que hayáis notado que lo que falta es el handles, lo que «une» el método con el evento del control.


Entonces… ¿Dónde se «une» el método con el evento en C#?


En el designer.cs con el que teníamos problemas, esta es la línea que lo demuestra


this.Load += new System.EventHandler(this.Form1_Load);


¿Dónde estan los errores?


Pues que si eliminamos el evento como en VB, en el designer se seguirá apuntando hacia un evento que no existe y eso genera los errores.


¿Cuál es la solución a este problema?


Pues tenemos dos opciones:



  • Elinamos esa línea de código
  • O como deberíamos hacer… eliminamos los eventos desde la ventana de propiedades del diseñador.

Espero que os sea útil 😉