<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>XperimentoS &#187; VB.Net</title>
	<atom:link href="http://www.xperimentos.com/category/programacion/lenguajes/vbnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xperimentos.com</link>
	<description>Experiencias Profesionales...</description>
	<lastBuildDate>Sun, 10 Jul 2011 12:36:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Los 10 FrameWorks .Net que debería aprender en el 2007</title>
		<link>http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/</link>
		<comments>http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/#comments</comments>
		<pubDate>Sat, 26 May 2007 17:13:53 +0000</pubDate>
		<dc:creator>lcflores</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/</guid>
		<description><![CDATA[Interesante nota de Peter Bromberg en la cual menciona desde su punto de vista cuales son los 10 FrameWorks que deberíamos revisar durante lo que queda de año 2007 para no &#8220;quedarnos obsoletos&#8221;. Ciertamente, cada uno podemos tener nuestra propia interpretación, pero no está menos ver cual es revisar otros puntos de vista. El listado incluye las [...]]]></description>
			<content:encoded><![CDATA[<p><img border="0" align="left" src="http://www.xperimentos.com/public/2007/05/microsoft-net-logo-white-2.PNG" alt="Microsoft .NET logo white" title="Microsoft .NET logo white" />Interesante nota de <a target="_blank" href="http://www.eggheadcafe.com/articles/pbrombergresume.asp">Peter Bromberg</a> en la cual menciona desde su punto de vista cuales son los 10 FrameWorks que deberíamos revisar durante lo que queda de año 2007 para no &#8220;quedarnos obsoletos&#8221;. Ciertamente, cada uno podemos tener nuestra propia interpretación, pero no está menos ver cual es revisar otros puntos de vista.</p>
<p>El listado incluye las siguientes tecnologías:</p>
<ol>
<li>WCF (Windows Communication Foundation)</li>
<li>ADO.NET (and LINQ)</li>
<li>WPF (Windows Presentation Foundation)</li>
<li>SQL Server 2005 (and on)</li>
<li>ASP.NET 2.0</li>
<li>Security</li>
<li>TDD (Test Driven Development)</li>
<li>Networking (System.Net and related)</li>
<li>Threading</li>
<li>Learning</li>
</ol>
<p>Enlaces:<br />
<a target="_blank" href="http://weblogs.asp.net/pleloup/archive/2007/05/25/top-10-net-framework-technologies-to-learn-in-2007.aspx">Top 10 .NET Framework Technologies to Learn in 2007</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/05/26/los-10-framework-net-que-deberia-aprender-en-el-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabajar con ficheros Zip en VB.Net y C#</title>
		<link>http://www.xperimentos.com/2007/04/30/trabajar-con-ficheros-zip-en-vbnet-y-c/</link>
		<comments>http://www.xperimentos.com/2007/04/30/trabajar-con-ficheros-zip-en-vbnet-y-c/#comments</comments>
		<pubDate>Mon, 30 Apr 2007 16:56:22 +0000</pubDate>
		<dc:creator>maitetxu</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/?p=169</guid>
		<description><![CDATA[A pesar de que la continuidad de J# está mas que cuestionada, todavía puede ser útil para varias cosas entre ellas comprimir archivos. Desarrollando una aplicación Web en .Net hemos tenido la necesidad de comprimir varios archivos en un fichero Zip y enviarlos al cliente Web de forma transparente para el usuario. Existen numerosas librerías [...]]]></description>
			<content:encoded><![CDATA[<p>A pesar de que la continuidad de J# está mas que cuestionada, todavía puede ser útil para varias cosas entre ellas comprimir archivos.</p>
<p>Desarrollando una aplicación Web en .Net hemos tenido la necesidad de comprimir varios archivos en un fichero Zip y enviarlos al cliente Web de forma transparente para el usuario.</p>
<p>Existen numerosas librerías para trabajar con ficheros Zip, pero encontramos una forma sencilla de trabajar con los ficheros Zip desde un programa VB.Net (también válido para C#). El Framework 1.1 de Microsoft (y también el 2.0) incorporan el lenguaje J# que es un “<em>pariente de Java</em>”, luego “<em>java.util.zip</em>” debe existir en algún lado. Si alguien se pregunta si existe en C# la respuesta es no <img src='http://www.xperimentos.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Efectivamente J# contiene “<em>java.util.zip</em>” y está dentro de “<em>vjslib.dll</em>”. Primero, nos aseguramos que tenemos en nuestro servidor/pc está librería, sino la tenéis podéis descargaros el “<em>Paquete redistribuible de Microsoft Visual J# .NET versión 1.1</em>” (o en inglés “<em>Microsoft Visual J# .NET Version 1.1 Redistributable Package</em>”) en <a rel="Paquete redistribuible de Microsoft Visual J# .NET versión 1.1" target="_blank" href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;FamilyID=e3cf70a9-84ca-4fea-9e7d-7d674d2c7ca1)">esta dirección</a>.</p>
<p>Añadiendo una referencia a la librería <em>vjslib.dll</em> en nuestro proyecto ya podemos utilizar las funciones que necesitamos para acceder a los ficheros zip como en el siguiente ejemplo:</p>
<p><code><br />
<font color="#0000ff">Imports</font> java.util<br />
<font color="#0000ff">Imports</font> java.util.zip<br />
<font color="#0000ff">Imports</font> java.io</p>
<p><font color="#008000">' Función auxiliar que copia los bytes de un inputStream a un outputStream</font><br />
<font color="#0000ff">Public Shared Sub</font> CopyStream(<font color="#0000ff">ByVal</font> inputStream _<br />
       <font color="#0000ff">As</font> java.io.InputStream, _<br />
       <font color="#0000ff">ByRef</font> outputStream <font color="#0000ff">As</font> java.io.OutputStream)<br />
  <font color="#0000ff">Dim</font> buffer(8192) <font color="#0000ff">As</font> SByte<br />
  <font color="#0000ff">Dim</font> got <font color="#0000ff">As Integer</font><br />
  got = inputStream.read(buffer, 0, buffer.Length)<br />
  <font color="#0000ff">While</font> got &gt; 0<br />
    outputStream.write(buffer, 0, got)<br />
    got = inputStream.read(buffer, 0, buffer.Length)<br />
  <font color="#0000ff">End While</font><br />
  outputStream.flush()<br />
<font color="#0000ff">End Sub</font></p>
<p><font color="#0000ff">Public Function</font> createZip(<font color="#0000ff">ByVal</font> zipPath <font color="#0000ff">As</font> String, _<br />
  <font color="#0000ff">ByVal</font> files2Zip <font color="#0000ff">As</font> System.Collections.ArrayList) _<br />
  <font color="#0000ff">As Boolean</font>  <br />
  <font color="#0000ff">Dim </font>zipOutputStream <font color="#0000ff">As</font> zipOutputStream<br />
  <font color="#0000ff">Dim</font> zipEntry <font color="#0000ff">As</font> zipEntry<br />
  <font color="#0000ff">Dim</font> fileInputStream <font color="#0000ff">As</font> java.io.FileInputStream<br />
  <font color="#0000ff">Dim</font> file2Zip <font color="#0000ff">As</font> String<br />
  <font color="#0000ff">Dim</font> auxObj <font color="#0000ff">As</font> Object</code><code> </code><code><font color="#008000">  ' Esta variable contiene el valor que la<br />
  ' función retornara</font><br />
  <font color="#0000ff">Dim</font> created = <font color="#0000ff">True </font><font color="#0000ff">Try<br />
  </font><font color="#008000">' Crea el fichero zip</font><br />
  zipOutputStream = <font color="#0000ff">New</font> _<br />
    zipOutputStream(<font color="#0000ff">New</font> _<br />
    java.io.FileOutputStream(zipPath))<br />
   <font color="#0000ff">If Not</font> files2Zip <font color="#0000ff">Is Nothing Then<br />
    For Each</font> auxObj <font color="#0000ff">In</font> files2Zip<br />
      file2Zip = <font color="#0000ff">CType</font>(auxObj, <font color="#0000ff">String</font>)<br />
      zipEntry = <font color="#0000ff">New</font> _<br />
      zipEntry(System.IO.Path.GetFileName(file2Zip))<br />
      <font color="#008000">' Comprimimos los datos</font><br />
      zipEntry.setMethod(zipEntry.DEFLATED)<br />
      <font color="#008000">' Añadimos el fichero al zip</font><br />
      zipOutputStream.putNextEntry(zipEntry)<br />
      <font color="#0000ff">Try</font><br />
        fileInputStream = <font color="#0000ff">New</font> _<br />
          java.io.FileInputStream (file2Zip)<br />
        <font color="#0000ff">Try</font><br />
          CopyStream(fileInputStream, _<br />
          zipOutputStream)<br />
        <font color="#0000ff">Finally</font><br />
          fileInputStream.close()<br />
        <font color="#0000ff">End Try<br />
      Catch</font> e <font color="#0000ff">As</font> Exception<br />
        created = <font color="#0000ff">False<br />
      Finally</font><br />
        zipOutputStream.closeEntry()<br />
     <font color="#0000ff"> End Try<br />
    Next<br />
  End If<br />
Catch</font> e <font color="#0000ff">As</font> Exception<br />
  created = <font color="#0000ff">False<br />
Finally<br />
  If Not</font> zipOutputStream <font color="#0000ff">Is Nothing Then</font><br />
    zipOutputStream.close()<br />
  <font color="#0000ff">End If</font><br />
<font color="#0000ff">End Try</font></code><code><font color="#0000ff">Return</font> created<br />
<font color="#0000ff">End Function</font></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/04/30/trabajar-con-ficheros-zip-en-vbnet-y-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Error &#8220;System.Data.OleDb. OleDbException: Error no especificado&#8221; en ASP.NET al conectar con una base de datos con Microsoft Jet OleDb 4.0</title>
		<link>http://www.xperimentos.com/2007/04/26/error-systemdataoledb-oledbexception-error-no-especificado-en-aspnet-al-conectar-con-una-base-de-datos-con-microsoft-jet-oledb-40/</link>
		<comments>http://www.xperimentos.com/2007/04/26/error-systemdataoledb-oledbexception-error-no-especificado-en-aspnet-al-conectar-con-una-base-de-datos-con-microsoft-jet-oledb-40/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 08:14:19 +0000</pubDate>
		<dc:creator>lcflores</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/?p=161</guid>
		<description><![CDATA[Hay un curioso problema al intentar acceder a un Excel / Access en un servidor Web mediante OLEDB y ASP.NET. Es algo trivial, pero puede haceros perder mucho tiempo. El error se produce al llamar al método “Connection.Open” para abrir una connexion a un fichero Access o Excel con ASP.NET y OleDb. Hay dos posibles [...]]]></description>
			<content:encoded><![CDATA[<p>Hay un curioso problema al intentar acceder a un Excel / Access en un servidor Web mediante OLEDB y ASP.NET. Es algo trivial, pero puede haceros perder mucho tiempo. El error se produce al llamar al método “Connection.Open” para abrir una connexion a un fichero Access o Excel con ASP.NET y OleDb. Hay dos posibles causas:</p>
<p><strong>Primera causa: </strong>La cuenta ASP.NET/<em>Impersonated</em> no tiene suficientes permisos para crear el fichero ldb.</p>
<ul>
<li><strong>Solución:</strong> Dar a la cuenta del usuario ASP.NET permisos de escritura/lectura a la carpeta donde está el fichero Excel/Access. Si estas utilizando “<em>impersonation</em>”, tienes que dar a la cuenta “<em>impersonated</em>” los permisos mencionados, es decir, a todos los usuarios que se vayan a conectar (con seguridad Windows).</li>
</ul>
<p><strong>Segunda causa: </strong>La cuenta “<em>Impersonated</em>” no tiene suficientes privilegios para crear los ficheros temporales.<br />
Cuando  abres un fichero Excel o Access usando Jet, require la creación de ficheros temporales. Con ASP.NET estos ficheros temporales serán creados en el directorio:</p>
<blockquote><p>“C:\Documents and Settings\&lt;NombreServidor&gt;\ASPNET\Local Settings\Temp”</p></blockquote>
<p>Por defecto la cuenta del usuario ASP.NET tiene completo acceso a este directorio. Sin embargo, cuando estas usando “<em>impersonation</em>”, esta cuenta no tendrá acceso por defecto. En consecuencia, el proceso Jet no tendrá acceso a crear ficheros temporales cuando abre una conexión a un fichero Access o Excel con ASP.NET. Debido a esto, OleBd lanza una excepción sin un mensaje específico: “<em>System.Data.OleDb.OleDbException: Error no especificado</em>” o en inglés “<em>System.Data.OleDb.OleDbException: Unspecified error</em>”.</p>
<ul>
<li><strong>Solución:</strong> Dar permisos totales a la cuenta de “impersonated” a la carpeta mencionada. No está demás mirar el <a target="_blank" href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;825738" title="Artãulo de microsoft">artículo de Microsoft</a> donde encontraréis mas detalles.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/04/26/error-systemdataoledb-oledbexception-error-no-especificado-en-aspnet-al-conectar-con-una-base-de-datos-con-microsoft-jet-oledb-40/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Tabla de equivalencias entre VB.Net y CSharp (C#)</title>
		<link>http://www.xperimentos.com/2007/03/10/tabla-de-equivalencias-entre-vbnet-y-csharp-c/</link>
		<comments>http://www.xperimentos.com/2007/03/10/tabla-de-equivalencias-entre-vbnet-y-csharp-c/#comments</comments>
		<pubDate>Sat, 10 Mar 2007 16:18:07 +0000</pubDate>
		<dc:creator>lcflores</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/?p=99</guid>
		<description><![CDATA[Aunque es relativamente sencillo con la tecnología .Net cambiar de un lenguaje de programación a otro, ya que la filosofía de trabajo es la misma, los objetos, los espacios de nombres&#8230;, pero al cambiar entre VB.Net y C# pueden resultar frustrantes determinadas características de cada uno de los lenguajes. Un ejemplo, son las palabras claves [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque es relativamente sencillo con la tecnología .Net cambiar de un lenguaje de programación a otro, ya que la filosofía de trabajo es la misma, los objetos, los espacios de nombres&#8230;, pero al cambiar entre VB.Net y C# pueden resultar frustrantes determinadas características de cada uno de los lenguajes. Un ejemplo, son las palabras claves para los tipos de clases en VB.Net.</p>
<p>Os incluimos una tabla de equivalencias entre VB.Net y C# que os hará mas fácil el cambio de lenguaje o traducir código de los ejemplos que encontréis en Internet y que no estén en el lenguaje que utilizáis.</p>
<p><span id="more-99"></span></p>
<table border="1" cellPadding="2" cellSpacing="0">
<tr>
<td bgColor="#9999ff" vAlign="top"><strong>VB.NET</strong></td>
<td bgColor="#9999ff" vAlign="top"><strong>C#</strong></td>
<td bgColor="#9999ff" vAlign="top"><strong>Descripción</strong></td>
</tr>
<tr>
<td>NotInheritable</td>
<td>sealed</td>
<td>Especifica que una clase no puede ser usada como base para otra clase, es decir, no puede ser heredada.</td>
</tr>
<tr>
<td>NotOverridable</td>
<td>sealed</td>
<td>Especifica que un método no puede ser sobrescrito.</td>
</tr>
<tr>
<td>MustInherit</td>
<td>abstract</td>
<td>Especifica que una clase sólo puede ser heredada (no puede ser creada una instancia de la clase).</td>
</tr>
<tr>
<td>MustOverride</td>
<td>abstract</td>
<td>Especifica que un método debe ser implementado en las clases hijas.</td>
</tr>
<tr>
<td>Overridable</td>
<td>virtual</td>
<td>Especifica que una propiedad de la clase puede ser sobrescrita.</td>
</tr>
<tr>
<td>Shared</td>
<td>static</td>
<td>Especifica que una propiedad de la clase es compartida por todas las instancias de la clase (es estático). No es necesaria ninguna instancia de la clase para llamar a esta propiedad).</td>
</tr>
<tr>
<td>Static</td>
<td>no equivalent</td>
<td>Especifica que el valor de una variable local es preservado entre diferentes llamadas.</td>
</tr>
<tr>
<td>Public</td>
<td>public</td>
<td>Clase o propiedad es visible fuera del proyecto o assembly.</td>
</tr>
<tr>
<td>Friend</td>
<td>internal</td>
<td>Clase o propiedad es invisible fuera del proyecto o assembly.</td>
</tr>
<tr>
<td>Private</td>
<td>private</td>
<td>Clase o propiedad es visible sólo en el proyecto.</td>
</tr>
<tr>
<td>Overloads</td>
<td>not required</td>
<td>Especifica que una propiedad sobrecargada por otra propiedad.</td>
</tr>
<tr>
<td>Overrides</td>
<td>override</td>
<td>Especifica que una propiedad sobrescrita por otra propiedad.</td>
</tr>
<tr>
<td>Implements I1</td>
<td>class C1:I1</td>
<td>Especifica que la clase (C1) implementa el interfaz I1.</td>
</tr>
<tr>
<td>Inherits C2</td>
<td>class C1:C2</td>
<td>Especifica que la clase (C1) hereda la clase C2.</td>
</tr>
<tr>
<td>Implements I1</p>
<p>Inherits C2</td>
<td>class C1:C2,I1</td>
<td>Especifica que la clase (C1) implementa el interfaz I1 y hereda la clase C2.</td>
</tr>
<tr>
<td>Shadows</td>
<td>new</td>
<td> </td>
</tr>
<tr>
<td>Finalize</td>
<td>~C1 <span class="VBE_Normal">(destructor)</span></td>
<td>Método llamado por el sistema justo antes de que el garbage collection reclame el objeto. C1 es el nombre de la clase.</td>
</tr>
<tr>
<td>New</td>
<td>C1</td>
<td>Método constructor, llamado cuando el objeto es creado. C1 es el nombre de la clase.</td>
</tr>
<tr>
<td>Dim x as Int32</td>
<td>Int32 x</td>
<td>Declara la variable &#8220;x&#8221; del typo &#8220;System.Int32&#8243;.</td>
</tr>
<tr>
<td>Imports</td>
<td>using</td>
<td>Permite llamar a métodos sin necesidad de especificar el nombre del Namespace completo.</td>
</tr>
<tr>
<td>&lt;&gt;</td>
<td>[]</td>
<td>Especifica parámetros.</td>
</tr>
<tr>
<td>_</td>
<td>;</td>
<td>Continuación de línea en VB, fin de línea en C#.</td>
</tr>
<tr>
<td>And</p>
<p>Or</td>
<td>&amp;&amp;</p>
<p>||</td>
<td>Operadores lógicos.</td>
</tr>
<tr>
<td>no soportado</td>
<td>&lt;&lt; &gt;&gt;</td>
<td>Operadores Shift.</td>
</tr>
<tr>
<td>X+=1 (x=x+1)</p>
<p>X-=1 (x=x-1)</p>
<p>also *=, /=, ^= etc..</td>
<td>x++</p>
<p>x&#8211;</td>
<td>Incrementos.</td>
</tr>
<tr>
<td>Dim x(4) as Int32</p>
<p>= 5 items (0 to 4)</td>
<td>Int32[] x = new Int32[4];</p>
<p>= 4 items (0 to 3)</td>
<td>Diferencias entre los elementos creados en las declaraciones de arrays.</td>
</tr>
<tr>
<td>Dim x as Int32</td>
<td>Int32 x = 0</td>
<td>x es inicializado a 0 automáticamente en VB.</td>
</tr>
<tr>
<td>ReDim Preserve</td>
<td>no equivalent</td>
<td>Redimensiona un array.</td>
</tr>
<tr>
<td>Optional</td>
<td>no soportado</td>
<td>Especifica que un parámetro es opcional.</td>
</tr>
<tr>
<td>Select Case x<br />
Case True<br />
Case Else<br />
End Select</td>
<td>switch(I)<br />
{<br />
case 1:break;<br />
default:break;<br />
};</td>
<td> </td>
</tr>
<tr>
<td>ByVal</p>
<p>ByRef</td>
<td>not requerido</p>
<p>ref</td>
<td>Pasando parámetros por valor y referencia.</td>
</tr>
<tr>
<td>Me</td>
<td>this</td>
<td>Referencia al objeto actual.</td>
</tr>
<tr>
<td>MyBase</td>
<td>base</td>
<td>Referencia a la clase base.</td>
</tr>
<tr>
<td>MyClass</td>
<td>no soportado</td>
<td>Realiza una llamada non-virtual a un método virtual del objeto actual.</td>
</tr>
<tr>
<td>Const</td>
<td>const</p>
<p>readonly</td>
<td>Declara una constante.</td>
</tr>
<tr>
<td>Enum</td>
<td>enum</td>
<td>Declara un enumerator.</td>
</tr>
<tr>
<td>Structure</td>
<td>struct</td>
<td>Declara una estructura.</td>
</tr>
<tr>
<td>no soportado</td>
<td>volatile</td>
<td>Declara un objeto que puede ser modificado de forma asíncrona.</td>
</tr>
<tr>
<td>obj = Nothing</td>
<td>obj == null</td>
<td>Comprueba que una variable objeto no es nula.</td>
</tr>
<tr>
<td>Option Explicit</td>
<td>Opción por defecto y no puede ser cambiada</td>
<td>Especifica que todas las variables tienen que ser declaradas.</td>
</tr>
<tr>
<td>IsDBNull</td>
<td>no soportado</td>
<td>Comprobación para un nulo de base de datos.</td>
</tr>
<tr>
<td>Default</td>
<td>no soportado</td>
<td>Especifica un método por defecto de un clase.</td>
</tr>
<tr>
<td>WithEvents</td>
<td>no soportado</td>
<td>Declara una variable cuyos eventos queremos manejar.</td>
</tr>
<tr>
<td>Handles</td>
<td>no soportado</td>
<td>Especifica que un método es llamado por un evento.</td>
</tr>
<tr>
<td>Try<br />
Catch<br />
Finally<br />
End Try</td>
<td>try{}<br />
catch{}<br />
finally{}</td>
<td>Manejo estructurado de las excepciones.</td>
</tr>
<tr>
<td>REM</p>
<p>&#8216;</td>
<td>/* &#8230; */</p>
<p>//</td>
<td>Líneas de comentarios</td>
</tr>
<tr>
<td>not soportado</td>
<td>///</td>
<td>líneas de comentarios XML</td>
</tr>
<tr>
<td>Dim x As String = &#8220;Hola&#8221;<br />
Dim y As Char = GetChar(x, 1)</td>
<td>string x = &#8220;Hola&#8221;;<br />
char y;<br />
y = x[1];</td>
<td>Recupera un carácter de una cadena de texto.</td>
</tr>
<tr>
<td>With &#8230; End With</td>
<td>no soportado</td>
<td>Evalúa un objeto una vez y permite usarlo varias veces.</td>
</tr>
<tr>
<td>Dim a() as Long = {1,2,3}</td>
<td>int[] x = new int[4] {1,2,3,4};</td>
<td>Inicialización de un array.</td>
</tr>
<tr>
<td>Event</p>
<p>RaiseEvent</td>
<td>event</td>
<td>Declara y lanza un evento.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/03/10/tabla-de-equivalencias-entre-vbnet-y-csharp-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Equivalencias entre VB.Net y VB 6.0 para la manipulación de strings</title>
		<link>http://www.xperimentos.com/2007/02/15/equivalencias-entre-vbnet-y-vb-60-para-la-manipulacion-de-strings/</link>
		<comments>http://www.xperimentos.com/2007/02/15/equivalencias-entre-vbnet-y-vb-60-para-la-manipulacion-de-strings/#comments</comments>
		<pubDate>Thu, 15 Feb 2007 11:33:26 +0000</pubDate>
		<dc:creator>lcflores</dc:creator>
				<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://www.xperimentos.com/?p=65</guid>
		<description><![CDATA[Cuando empiezas a programar en VB.Net después de haberlo hecho anteriormente en VB 6.0 (Basic script, WSH, VBA… etc.) aparentemente todo es lo mismo, pero mejor, un lenguaje mas coherente y mejor estructurado. Sin embargo, es cierto que hay cosas que hechas de menos, principalmente funciones que usabas y que ahora ya no valen porque [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando empiezas a programar en VB.Net después de haberlo hecho anteriormente en VB 6.0 (Basic script, WSH, VBA… etc.) aparentemente todo es lo mismo, pero mejor, un lenguaje mas coherente y mejor estructurado. Sin embargo, es cierto que hay cosas que hechas de menos, principalmente funciones que usabas y que ahora ya no valen porque han sido sustituidas por otras funciones.</p>
<p>Os presentamos algunas equivalencias de VB 6.0 que os ahorrarán tiempo a la hora de trabajar con cadenas de caracteres en VB.Net.</p>
<p>Comandos equivalents:</p>
<blockquote><p><em>Len</em>     &gt;&gt; <em>miCadena.Length</em><br />
<em>Mid</em>     &gt;&gt; <em>miCadena.SubString(&lt;inicio&gt;,&lt;longitud&gt;)<br />
</em><em>Replace</em> &gt;&gt; <em>miCadena.Replace(&lt;cadanaBuscada&gt;,&lt;cadenaNueva&gt;)</em><br />
<em>InStr</em>   &gt;&gt; <em>miCadena.IndexOf(&lt;cadenaBuscada&gt;)</em><br />
<em>UCase</em>   &gt;&gt; <em>miCadena.ToUpper</em><br />
<em>LCase</em>   &gt;&gt; <em>miCadena.ToLower</em><br />
<em>Split</em>   &gt;&gt; <em>miCadena.Split(&lt;delimitador&gt;)</em><br />
<em>Join</em>    &gt;&gt; <em>String.Join(&lt;delimitador&gt;,&lt;array&gt;)</em><br />
<em>Trim</em>    &gt;&gt; <em>miCadena.Trim</em><br />
<em>LTrim</em>   &gt;&gt; <em>miCadena.TrimStart</em><br />
<em>RTrim</em>   &gt;&gt; <em>miCadena.TrimEnd</em><br />
<em>Compare</em> &gt;&gt; <em>String.Compare</em><br />
<em>Left</em>    &gt;&gt; <em>miCadena.SubString(&lt;inicio&gt;,&lt;longitud&gt;)<br />
</em><em>Right</em>   &gt;&gt; <em>miCadena.SubString(&lt;inicio&gt;,&lt;longitud&gt;)</em></p></blockquote>
<p>Por ejemplo, para obtener la longitud de una cadena de texto llamada “miCadena” en VB 6.0 sería</p>
<blockquote><p><em>Longitud = Len(miCadena)</em></p></blockquote>
<p>Mientras que en VB.Net sería</p>
<blockquote><p><em>Longitud = miCadena.Length</em></p></blockquote>
<p>Existen algunas funciones para las que no existe una directa traducción y otras que son nuevas. Como las funciones &#8220;<em>String$</em>&#8221; o &#8220;<em>StrReverse</em>&#8221; de VB 6.0 o las funciones “<em>PadLeft</em>” o “<em>EndsWith</em>”.</p>
<p>La función “<em>String$(&lt;c&gt;,&lt;x&gt;)</em>” existente en VB 6.0 que permitía construir una cadena de caracteres a partir de la cadena “c” repetida “x” veces. Por otro lado, la función “<em>StrReverse(&lt;c&gt;)</em>” permitía dar la vuelta a una cadena de caracteres, nunca llegue a entender muy bien su sentido, pero ahí estaba en VB 6.0.</p>
<p>Finalmente, VB.Net incorpora algunas nuevas funciones como “<em>PadLeft</em>” y “<em>PadRight</em>” que insertan caracteres blancos para alinear las cadenas de caracteres a la izquierda o derecha. Las funciones “<em>EndsWith</em>” o<br />
“<em>StartsWith</em>” permiten comparar de forma sencilla como termina o empieza una cadena de caracteres.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xperimentos.com/2007/02/15/equivalencias-entre-vbnet-y-vb-60-para-la-manipulacion-de-strings/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

