Você está na página 1de 7

Actualizacin de VB6 a VB .

NET
Visual Basic .NET no es compatible al 100% con VB6. El motivo principal es permitir a VB .NET aprovechar todo el potencial de .NET Framework sin restricciones. Como consecuencia de ello, Visual Basic obtuvo distintos recursos nuevos y muy importantes, como por ejemplo: Programacin orientada a objetos (OOP), con clases, herencia y constructores parametrizados Tratamiento de errores con excepciones Sobrecarga de funciones Espacios de nombres Gestin de hilos (threads) libres para la creacin de cdigo 100% reentrante, algo importante en servidores de aplicaciones de alta disponibilidad y facilidad de ampliacin Opcin de verificacin de sintaxis ms rigurosa ("option strict")

Observe que usted no est obligado a hacer la actualizacin de todo lo que exista en su proyecto. Por ejemplo, los objetos COM/COM+ escritos en VB6 y compilados para obtener un archivo .EXE/.DLL pueden ser utilizados desde los programas .NET. Ejecucin de dos versiones Es posible ejecutar VB6 y VB .NET en la misma computadora y al mismo tiempo, como puede observar en esta pantalla capturada en la misma computadora y abierta con un ejemplo que se entrega con VB6, o "Calc" (esta imagen no es un montaje):

Asistente Al abrir un proyecto de VB6 en VS .NET, el programa se actualiza automticamente. Observe lo siguiente: La actualizacin slo puede realizarse desde VB6. Si tiene un programa hecho para una versin anterior de VB, haga antes la actualizacin a la versin 6. Muchos de los recursos se actualizan automticamente, con distintos grados de xito. Algunos recursos no pueden actualizarse automticamente. En estos casos, aparecer un comentario en el programa y en el reporte de actualizacin.

Al abrir un proyecto de VB6, se inicia el asistente de conversin, como en el ejemplo "CALC" de VB6:

Haga clic en Next (Siguiente):

Indique dnde desea almacenar el nuevo proyecto:

Haga clic en Next (Siguiente):

La actualizacin requiere unos instantes. Entretanto, se muestra un cuadro de dilogo:

El asistente genera un reporte visible desde el navegador, en el que puede ver los detalles de la actualizacin:

Tambin puede examinar los detalles desde Visual Studio .NET. Observe la lista de tareas ("Task List") y los comentarios:

A pesar de los avisos, el programa mostrado arriba funciona sin necesidad de hacer ninguna modificacin. A ttulo de curiosidad: sera posible evitar la mayor parte de los avisos anteriores, slo con utilizar variables con tipo en lugar del tipo Variant. Cdigo antiguo: Dim Dim Dim Dim Op1, Op2 LastInput OpFlag TempReadout ' Previously input operand. ' Indicate type of last keypress event. ' Indicate pending operation.

Cdigo modificado para evitar los avisos (sigue siendo compatible con VB6): Dim Dim Dim Dim Op1, Op2 As Double LastInput As String OpFlag As String TempReadout As string ' Previously input operand. ' Indicate type of last keypress event. ' Indicate pending operation.

Novedades A continuacin destacamos algunos de los recursos que han cambiado y que requieren atencin durante la actualizacin. Tipo Variant Sencillamente, el tipo Variant deja de existir. Es posible utilizar el tipo object en su lugar. Tamao del tipo integer En VB .NET, el tipo integer tiene 32 bits en lugar de 16. Si desea utilizar un entero de 16 bits en VB .NET, utilice el tipo short. Propiedad Default La propiedad default deja de existir. En compensacin, ya no existe el operador Set para diferenciar entre la atribucin a la propiedad default o al objeto en s. Parntesis en subrutinas Las llamadas de subrutina requieren parntesis, al igual que las llamadas de funcin.

Declaracin de variable En VB6, la declaracin de variable siguiente declara la variable x como integer. En VB .NET, las dos variables son de tipo integer. Dim x, y as Integer Los formularios pasan a ser formularios de Windows Los formularios de VB pasan a ser "WinForms", con caractersticas semejantes pero con propiedades distintas.

Recomendaciones para facilitar la actualizacin El asistente de actualizacin funciona mejor si usted sigue algunas recomendaciones durante el desarrollo de su proyecto de VB6 ANTES de realizar la actualizacin. Utilice Option Explicit Esta opcin obliga a declarar las variables, lo que a su vez har que el programa pueda ser traducido ms fcilmente por el asistente. Declare los tipos de las variables Intente siempre declarar las variables previamente y asgneles siempre un tipo, en lugar de Variant: Utilice: Dim Op1 As Double, Op2 As Double Dim LastInput As String En lugar de: Dim Op1, Op2 Dim LastInput Utilice el enlazamiento en tiempo de compilacin ("early binding") Tanto en VB6 como en VB .NET podemos llamar a objetos con enlazamiento en tiempo de compilacin ("early binding") o en tiempo de ejecucin ("late binding"). El problema es que durante la actualizacin, el asistente no consigue diferenciar las propiedades default si utiliza el enlazamiento en tiempo de ejecucin. Utilice Date para las fechas En versiones antiguas de VB, era posible utilizar el tipo double para almacenar fechas, lo cual confunde evidentemente al asistente de actualizacin. No utilice propiedades Default En VB6 es posible omitir el nombre de la propiedad default. Entretanto, si utiliza el nombre de la propiedad default, el asistente funcionar mejor, como en este ejemplo: Utilice: Text1.Text = "Usuario" En lugar de: Text1 = "Usuario" Evite utilizar null en las expresiones En VB6, podemos usar null en las expresiones, y el resultado ser null. En VB .NET, esto crea un error de sintaxis, como por ejemplo: Dim V V = 1 + Null V = Null + Right$("Un texto", 1) V = Right("Un texto", 0) En VB .NET, las funciones siguientes nunca devolvern null, como hacan en VB6: Chr Mid Command Oct CurDir Right

Date RTrim Environ Hex Time LCase

Space Error Str Trim LTrim UCase

Si necesita comprobar si un valor es null, utilice la funcin IsNull(). Matrices con base cero En VB .NET, todas las matrices se indexan a partir de cero. Por tanto, ya no existe la instruccin "option base", y la lgica de los programas debe tener en cuenta esta diferencia. Constantes Ya era una buena prctica de programacin de VB6 utilizar constantes en lugar de valores numricos. En VB .NET muchos de estos valores cambiarn. Veamos un ejemplo: Correcto: Me.WindowState = vbMaximized Incorrecto: Me.WindowStyle = 2 Me.WindowStyle = X Cadenas de tamao fijo VB .NET no admite strings de tamao fijo, lo cual puede ser un problema en el caso de las estructuras. Por ejemplo, modifique: Private Type MyType MyArray(5) As Integer MyFixedString As String * 100 End Type Sub Bar() Dim MyVariable As MyType End Sub Para que sea: Private Type MyType MyArray() As Integer MyFixedString As String End Type Sub Bar() Dim MyVariable As MyType ReDim MyVariable.MyArray(5) As Integer MyVariable.MyFixedString = String$(100, " ") End Sub Recursos eliminados Algunos recursos fueron simplemente eliminados y no existen equivalentes directos. Def<tipo> En VB6, usted puede especificar un prefijo para que las variables que lo contengan presenten un tipo especfico, como DefBool, DefByte, DefInt, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj e DefVar. Por ejemplo, el comando siguiente especifica que las variables que comiencen con las letras a, b y c sern de tipo entero: DefInt A-C GoTo/GoSub calculados VB6 admita la sintaxis siguiente:

On x GoTo 100, 200, 300 Ahora debe utilizar if y case.

GoSub/Return Estos comandos ya no existen. Utilice funciones y subrutinas. Option Base 0|1 Todas las matrices tienen base cero. LSet En VB6, poda utilizar el comando siguiente para forzar la atribucin de un tipo definido por el usuario a otro tipo. Esto ya no es posible. VarPtr, VarPrtArray, VarPtrStringArray, ObjPtr y StrPtr Estas funciones no documentadas servan para obtener un puntero a variables. Este recurso ya no existe.

Consideraciones acerca de los formularios Varios recursos de los formularios fueron eliminados o modificados: El control OleContainer ya no existe. El control Shape ya no existe. El control Line ya no existe. Los comandos de diseo fueron modificados para usar GDI+ y la clase Graphics. Por tanto, ya no existen las funciones Circle, CLS, PSet, Line y Poin. El control Timer de .NET se deshabilita con la propiedad Enable. La asignacin del valor 0 a Interval tiene el mismo efecto que asignarle 1. WindowsForms cuenta con dos tipos de mens: MainMenu y ContextMenu. Durante la actualizacin, ambos se convierten en MainMenu. WindowsForms no es compatible con DDE. El modelo "arrastrar y colocar" es muy distinto. La actualizacin automtica no es posible. La interaccin con el Portapapeles es diferente. La actualizacin automtica no es posible. Los formularios de WindowsForms slo admiten fuentes de tipo TrueType y OpenType. Las dems fuentes se convierten a la fuente System. Microsoft recomienda el uso de la fuente "Arial" en lugar de "MS Sans Serif" para el texto con formato.

Você também pode gostar