Enero 19, 2018, 12:11:06 am

Autor Tema: » Practicas recomendadas en Visual Basic  (Leído 13014 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado seth

  • El mas real
  • G#
  • **
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
» Practicas recomendadas en Visual Basic
« en: Marzo 08, 2009, 04:20:57 am »


Practicas recomendadas en Visual Basic
   En este post se ira recopilando practicas recomendadas y los errores mas vistos en visual basic. Cualquiera puede colaborar.

8/3/09: google cache rulez!

Modified 12/01/2010
« Última modificación: Mayo 11, 2010, 10:04:44 pm por 3D1 »


Ves links a xd-blog.com.ar que no andan? buscalos en You are not allowed to view links. Register or Login

Desconectado seth

  • El mas real
  • G#
  • **
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Practicas recomendadas en visual basic
« Respuesta #1 en: Marzo 08, 2009, 04:22:06 am »
USAR OPTION EXPLICIT

Al principio de cada módulo o formulario, colocá
Código: You are not allowed to view links. Register or Login
Option ExplicitEsto obliga a que declares las variables, lo que evita:

    * Muchos errores (y pérdida de tiempo buscandolos)
    * Gasto de memoria (al no declarar las variables, VB asume que son del tipo Variant, por lo que se consume mucho mas memoria que si es de cualquier otro tipo)
    * Malas costumbres (Casi todos los lenguajes exigen que declares las variables, al momento de aprenderlos, cuesta mas si no usas esta sentencia)


Para ahorrar tiempo, se puede hacer que esta línea se agregue automáticamente:
Herramientas -> Opciones... -> Requerir declaración de variables -> Aceptar


« Última modificación: Marzo 08, 2009, 04:44:27 am por >> s E t H << »

Desconectado seth

  • El mas real
  • G#
  • **
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Practicas recomendadas en visual basic
« Respuesta #2 en: Marzo 08, 2009, 04:29:16 am »
CAMBIARLE EL NOMBRE A LOS CONTROLES

Resulta muy dificil leer un código donde se usan los controles por los nombres por defecto (Text1, Text2, Label1, Label2, Command1, Command2, etc). Es recomendable ponerles un nombre de esta manera:

    * Tres letras que indiquen el tipo de control (en minúsculas)
    * Un nombre que indique para que sirve el control, usando mayusculas en lugar de espacios


Ver tabla con las abreviaturas para los controles mas comunes (perdi el link cuando se jodio el foro)

Ejemplos de nombres correctos:

    * cmdCalcular
    * cmdComprimirArchivo
    * txtResultado
    * tmrHorario
    * txtPorcentaje
    * lblEstadoOperacion


Ejemplos de nombres incorrectos:

    * Text1
    * Command2
    * Boton
    * CMDCALCULAR
    * botonparamostrarelmensaje

Desconectado seth

  • El mas real
  • G#
  • **
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Practicas recomendadas en visual basic
« Respuesta #3 en: Marzo 08, 2009, 04:31:41 am »
DECLARAR EL TIPO DE VARIABLE

Otro error común es no declarar el tipo de variable:
Código: (vb) You are not allowed to view links. Register or Login
Dim GastosDe esta forma, Gastos seria una variable del tipo Variant, aunque despues le demos el mismo uso que si fuera long, byte, etc.
Citar
Las variables del tipo Variant son las que mas memoria ocupan:
Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22 bytes + longitud de la cadena si se trata de un dato tipo cadena de caracteres.

Osea, que, a menos que sea sumamente necesario, no conviene declarar las variables como Variant. Veamos un ejemplo:
Código: (vb) You are not allowed to view links. Register or Login
Dim Resultado 'declaramos resultado como Variant
Dim Numero(1 to 2) 'declaramos numero como un array de dos Variant

Numero(1)=txtNumero(1) 'txtNumero es un array de dos TextBox
Numero(2)=txtNumero(2)

Resultado=Numero(1) - Numero(2) 'realizamos una resta

MsgBox "El resultado es " & Resultado
Como ven, en ese codigo se declaran Resultado y Numero(1 to 2) como variant, aunque solamente se usen para un cálculo matemático. En este caso convendria declararlos como Long para ahorrar espacio en memoria:
Código: (vb) You are not allowed to view links. Register or Login
Dim Resultado As Long 'declaramos resultado como Long
Dim Numero(1 to 2) As Long 'declaramos numero como un array de dos Long

Numero(1)=txtNumero(1) 'txtNumero es un array de dos TextBox
Numero(2)=txtNumero(2)

Resultado=Numero(1) - Numero(2) 'realizamos una resta

MsgBox "El resultado es " & Resultado


Sabiendo esto, hay personas que siguen cometiendo el mismo error al declarar las variables asi (como si fuera C):
Código: (vb) You are not allowed to view links. Register or Login
Dim Ganancias, Perdidas, Costos, Total as IntegerEn otros lenguajes las cuatro variables serían del mismo tipo, pero en Visual Basic Total es del tipo Integer mientras que las otras son del tipo Variant
La forma correcta de declarar varias variables en la misma linea es asi:
Código: (vb) You are not allowed to view links. Register or Login
Dim Ganancias as Integer, Perdidas as Integer, Costos as Integer, Total as Integer
Static Mensual as Long, Vendedores as String, Anual as Long

Gracias a Mace Windu por hacerme acordar de este punto
« Última modificación: Mayo 11, 2010, 09:59:41 pm por 3D1 »

Desconectado EddyW

  • 3D1
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 3153
    • Ver Perfil
    • Google+
Re: Practicas recomendadas en visual basic
« Respuesta #4 en: Mayo 16, 2009, 07:39:52 pm »
VARIABLES - CADENAS DE LONGITUD FIJA

Un problema muy comun.., que usarlo no esta mal pero nos complica mucho code es no usar nunca longitud fija en nuestras variables..

Las Cadenas de longitud fija en las variables nos permiten limitar el numero de caracteres que puede tener nuestra variable aumentanto un "* N" donde N indica el numero de caracteres que puede contener la variable..

Por ejemplo si tengo este code y solo quiero que me muestre 5 caracteres de lo que se escribe en el text1 usandolo mal comunmente harian esto:
Código: (vb) You are not allowed to view links. Register or Login
Dim Txt as String
Txt = "1234567890"
Txt = Mid(Txt, 1, 5)
' El MsgBox mostrara 12345
MsgBox Txt
Pero si declaramos variables de longitud fija el code se simplifica asi:
Código: (vb) You are not allowed to view links. Register or Login
Dim Txt as String * 5
Txt = "1234567890"
' El MsgBox muestra 12345
MsgBox Txt
Aqui le digo a mi variable "Txt" con el "* 5" que solo puede contener 5 caracteres aunque le de mas..
Asi ahoramos mucho code y usamos menos Mid..
SaluDOS!!!
« Última modificación: Mayo 11, 2010, 10:00:00 pm por 3D1 »

Desconectado EddyW

  • 3D1
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 3153
    • Ver Perfil
    • Google+
Re: Practicas recomendadas en visual basic
« Respuesta #5 en: Mayo 16, 2009, 07:56:29 pm »
LA SENTENCIA WITH

Este es un metodo muy eficiente por ejemplo al estar cambiando las propiedades de un control, o accediendo a las partes de su registro..
y sobre todo si el nombre del control es demaciado largo, como no le gustaria seguro tener un code asi:
Código: (vb) You are not allowed to view links. Register or Login
TxtPassword.Text = "Hola"
TxtPassword.Height = 2000
TxtPassword.Width = 1000
TxtPassword.Top = 200
TxtPassword.Left = 500
TxtPassword.Font.Size = 18
TxtPassword.Font.Bold = true
Pues para ese tipo de problemas Visual Basic incluye esta sentencia With..
Para facilitarnos el code.., asea con With quedaria asi nuestro code:
Código: (vb) You are not allowed to view links. Register or Login
With TxtPassword
    .Text = "Hola"
    .Height = 2000
    .Width = 1000
    .Top = 200
    .Left = 500
    .Font.Size = 18
    .Font.Bold = True
End With
Y si uno es mas vivo como se dice haria mas simple el code asi:
Código: (vb) You are not allowed to view links. Register or Login
With TxtPassword
    .Text = "Hola"
    .Height = 2000
    .Width = 1000
    .Top = 200
    .Left = 500
   With .Font
       .Size = 18
       .Bold = True
   End With
End With
Y muy util porque solo pones el "." y ya te sale la lista con las funciones del control.., y solo queda seleccionar..  ;)
SaluDOS!!!
« Última modificación: Mayo 11, 2010, 10:00:51 pm por 3D1 »

alexmanycool

  • Visitante
Re: Practicas recomendadas en visual basic
« Respuesta #6 en: Octubre 24, 2009, 09:35:20 pm »
aveces la verdad duele, mas cuando nos marcan los errores, pero weno... es la verdad, si no aceptan sugerencias ps que mal, el foro seguirá con los mismos problemas...
pero no seguiré en un foro con estas características ni mis post. me voy de portal hacker
« Última modificación: Julio 02, 2010, 07:23:48 pm por alexmanycool »

Desconectado mDrinky

  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 2868
    • Ver Perfil
Re: Practicas recomendadas en visual basic
« Respuesta #7 en: Octubre 30, 2009, 07:59:42 am »
On Error Goto 0

Esto no indica que se vaya a la línea "0", (aunque exista), sino que deje de detectar errores... en ese procedimiento, ya que si hay algún procedimiento de nivel superior... si que se detectará el error...

Ejemplo:
Código: (vb) You are not allowed to view links. Register or Login
Private Sub Command6_Click()
    ' Esta variable se usará para mostrar mensajes en la rutina de detección
    Dim Mensaje As String

    ' Controlamos los posibles errores
    On Error GoTo HayError2 ' no puede haber dos etiquetas con el mismo nombre

    ' Producimos un error...
    Mensaje = "Instrucción: Error 10"
    Error 10

    ' Llamamos al procedimiento Command7_Click
    Mensaje = "Instrucción: Command7_Click"
    Command7_Click


    Exit Sub

HayError2:
    MsgBox "'" & Mensaje & "'" & vbCrLf & vbCrLf & _
           "Se ha producido un error: " & vbCrLf & _
           Err.Number & " - " & Err.Description

    ' Continuar por la siguiente instrucción
    Resume Next
End Sub


Private Sub Command7_Click()
    '
    On Error Resume Next

    ' Este mensaje de error será ignorado, (por el On Error Resume Next anterior)
    Error 13

    ' Dejamos de detectar errores
    On Error GoTo 0

    ' A ver que pasa con este otro error
    Error 15

    ' Este código nunca se ejecutará
    MsgBox "Un mensaje desde Command7_Click" & vbCrLf & "que nunca se mostrará"
End Sub

Espero haberlo hecho mejor que la ultima vez....


salu2!
« Última modificación: Mayo 11, 2010, 10:02:21 pm por 3D1 »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
Que guapo soy!

Desconectado 700esoj

  • Me das tu IP?
  • *
  • Mensajes: 164
    • Ver Perfil
Re: Practicas recomendadas en visual basic
« Respuesta #8 en: Enero 10, 2010, 01:52:40 pm »
Yo diria que el peor error que cometen la mayoria de todos los que usan Visual basic es no convertir tipos de variables con sus devidas funciones.  Osea que si tengo una variable tipo LONG  y quiero sacar de un STRING  los numeros  entonces utilizar las devidas Funciones.

Ejemplo:
Código: (vb) You are not allowed to view links. Register or Login

Dim valorA  as integer
Dim valorB  as integer


valorA = Text1.text
valorB = Text2.text


En cambio estan sacando un valor tipo STRING de un Textbox y dejando que Visual basic se encargue de convertirlo a Integer por si solo, En cambio en cualquier otro lenguage (incluyendo otros tipos de variaciones de BASIC) uno trata esa misma linea te daria un error.  Para eso estan las funciones VAL() y STR()  si fuera viseversa.

Ejemplo:
Código: (vb) You are not allowed to view links. Register or Login

Dim valorA  as integer
Dim mensaje as String

valorA = VAL(Text1.text)  'Cambiamos su valor de cadena a numerico
mensaje = STR(valorA)    'Cambiamos su valor numerico a cadena

MSGBOX mensaje



espero que eso ayude a los habitos
« Última modificación: Mayo 11, 2010, 10:02:32 pm por 3D1 »

Desconectado EddyW

  • 3D1
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 3153
    • Ver Perfil
    • Google+
Ahorrar lineas de codigo usando Switch - Practicas recomendadas en visual basic
« Respuesta #9 en: Enero 12, 2010, 05:33:43 pm »

Ahorrar lineas de codigo usando Switch

   Switch es una función que devuelve el primer valor o expresión verdaderos de una lista, por ejemplo nos ahorra tener que escribir varias sentencias IF que comparen el mismo valor varias veces ej:
Código: (vb) You are not allowed to view links. Register or Login
Private Sub Form_Load()
Dim Numero As Long
Numero = Val(InputBox("Escriba un Numero del 1 al 5:", , "1"))
If Numero = 1 Then
    MsgBox "Es Uno"
ElseIf Numero = 2 Then
    MsgBox "Es Dos"
ElseIf Numero = 3 Then
    MsgBox "Es Tres"
ElseIf Numero = 4 Then
    MsgBox "Es Cuatro"
ElseIf Numero = 5 Then
    MsgBox "Es el ultimo numero 5"
Else
    MsgBox "Numero Fuera.."
End If
End Sub
No hace falta explicar, pero por si las dudas, todo ocurre dentro del evento Form_Load del Form1, declaramos una variable Numero y luego pedimos introducir un numero del rango 1-5 (1 al 5), luego se comparan, si es 1 devuelve un mensaje diciendo "Es Uno" y así sucesivamente hasta el numero 5.

Reduciendo con Switch quedaría así:
Código: (vb) You are not allowed to view links. Register or Login
Private Sub Form_Load()
Dim Numero As Long
Numero = Val(InputBox("Escriba un Numero del 1 al 5:", , "1"))

MsgBox Switch(Numero = 1, "Es Uno", Numero = 2, "Es Dos", Numero = 3, "Es Tres", Numero = 4, "Es Cuatro", Numero = 5, _
 "Es el ultimo numero 5", Numero, "Numero fuera..")
End Sub
Voy a explicar como funciona cada parte del código dado:
Al hacer esto [Numero = 5] por ejemplo, devuelve True o False dependiendo si en realidad la variable Numero es igual a 5 ej:
Código: You are not allowed to view links. Register or Login
MsgBox (Numero = 5) & (Numero = 0)Si no declaras la variable esto devuelve falsoverdadero por que la variable como no se declaro es NULA o 0 por eso Falso y Verdadero por que si es NULA, entonces ahora sabemos por que pasamos los parámetros a Switch de esta form, la sintaxis es esta:
Citar
Switch Comparacion = Valor, ValorDevuelto_SiEsVerdadero
Como esto es un array, podemos pasarle mas parámetros en uno solo:
Citar
Switch Comparacion = Valor, ValorDevuelto_SiEsVerdadero, Comparacion = Valor, ValorDevuelto_SiEsVerdadero, . . .

Espero les sirva, para practicar y entenderlo mejor, recomiendo esto:
Código: (vb) You are not allowed to view links. Register or Login
MsgBox Switch(True, "Yo", False, "Tu", False, "El")
Código: (vb) You are not allowed to view links. Register or Login
MsgBox Switch(False, "Yo", True, "Tu", False, "El")
Código: (vb) You are not allowed to view links. Register or Login
MsgBox Switch(False, "Yo", False, "Tu", True, "El")Cualquier duda sobre esto en el foro, o por MP ;)

SaluDOS!!!
« Última modificación: Mayo 11, 2010, 10:03:25 pm por 3D1 »

Desconectado EddyW

  • 3D1
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 3153
    • Ver Perfil
    • Google+
Choose - Practicas recomendadas en visual basic
« Respuesta #10 en: Enero 12, 2010, 05:53:08 pm »

Función Choose
   Para los que alguna vez usaron o usan Batch, conocerán el comando Choose que cumple la misma función que cumple la función Choose de VB6.

   La función Choose selecciona y devuelve un valor de una lista de argumentos, esta va de la mano con la función Switch ya que son parecidas solo que esta es mas facil de entender.

   Pues primero aclarar para que puede servir y no seguir leyendo inútilmente, Choose toma el primer valor como indice y devuelve otro valor dependiendo de este, ejemplo de un uso sencillo con For:

Código: (vb) You are not allowed to view links. Register or Login
Private Sub Form_Load()
Dim I As Integer
For I = 1 To 5
    MsgBox Choose(I, "Es Uno", "Es Dos", "Es Tres", "Es Cuatro", "Es Cinco")
Next
End Sub

   No hace falta explicar, pero para los despistados, Choose toma el primer valor como indice en nuestro caso toma la variable I, y verifica si es igual a 1, devuelve el valor dado en el indice 1 del array en nuestro caso "Es Uno"..y así sucesivamente.

SaluDOS!!!
« Última modificación: Mayo 11, 2010, 10:04:04 pm por 3D1 »

Desconectado EddyW

  • 3D1
  • Si te metes con CPH
    te metes conmigo
  • ****
  • Mensajes: 3153
    • Ver Perfil
    • Google+
Función IIf - Practicas recomendadas en visual basic
« Respuesta #11 en: Enero 12, 2010, 06:10:30 pm »

Función IIf
   La función IIf devuelve una de dos partes, según la evaluación de una expresión, es muy útil en muchos casos en los que quieres cambiar valores True por False o viceversa, o también devolver valores distintos evaluando una Expresión de tipo Boolean, ej:
Código: (vb) You are not allowed to view links. Register or Login
Private Sub Form_Load()
For i = 1 To 51
    Form1.Visible = IIf(Form1.Visible, False, True)
    DoEvents
Next
End Sub
Una manera sencilla de hacer que un Form parpadee sin usar mucho código, la sintaxis es sencilla:
Citar
IIf (Expresion, ValorVerdadero, ValorFalse)
Lo que hace que nuestro Form parpadee es sencillo de explicar, IIf evalúa la expresión y si es True, entonces devuelve en el ValorTrue -> False y viceversa.

SaluDOS!!!
« Última modificación: Mayo 11, 2010, 10:04:16 pm por 3D1 »

Desconectado Horus_Point

  • CPQUE??
  • *
  • Mensajes: 1
  • Sexo: Masculino
  • Yo AMO a pOrtal HAcker!
    • Ver Perfil
Re:» Practicas recomendadas en Visual Basic
« Respuesta #12 en: Mayo 23, 2013, 05:08:58 am »
  Comentario eliminado.
« Última modificación: Mayo 23, 2013, 06:16:46 am por Horus_Point »

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7307
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:» Practicas recomendadas en Visual Basic
« Respuesta #13 en: Mayo 23, 2013, 05:22:08 am »

IIf está fuera de lugar en esta sección!

x=IIf(Variable=Esperado,Veradero, Falso)[/code], pero no tienen en cuenta el dato existente en la Valiable.

Me explico, por desgracia he visto muho código en el que se compara con el dato, pero la variable está vacia o, como sucede en la mayoría de casos, tiene un valor Null (Nulo).

Sobre todo me he encontrado en esta situación cuando he tenido que modificar programas de bases de datos o escritos en VBA en Access o Excel.


Podrían cambiarle el nombre a la sección. Las diferencias de versiones, sure tmb las podemos ver en code y diferenciarlas.

sorry
« Última modificación: Mayo 23, 2013, 08:23:28 am por .xAk. »
Is the truth out there?


exclamation
Visual Basic 6.0 vs Visual basic 2005/2008 Express Edition!

Iniciado por 700esoj

6 Respuestas
2435 Vistas
Último mensaje Agosto 25, 2007, 04:11:55 pm
por 700esoj
resuelto
Visual basic es o va a ser reemplazado por Visual Basic .net? [Solucionado]

Iniciado por Dreamaker

10 Respuestas
3168 Vistas
Último mensaje Marzo 30, 2010, 05:49:18 pm
por Dreamaker
question
Clave de activacion visual studio visual basic 2008

Iniciado por Ventiladorm

3 Respuestas
13193 Vistas
Último mensaje Noviembre 15, 2009, 02:57:39 pm
por rgb90
question
el visual basic.net es el mismo que el visual basic 6.0///

Iniciado por bighack

3 Respuestas
1565 Vistas
Último mensaje Marzo 17, 2007, 04:32:41 am
por Korpex
exclamation
Visual Code - Programacion En Visual Basic - Numero 1

Iniciado por eM.

14 Respuestas
5343 Vistas
Último mensaje Febrero 12, 2010, 10:54:57 am
por bolivianito
thumbup
Visual Code - Programacion en Visual Basic - Numero 2 -

Iniciado por eM.

7 Respuestas
3750 Vistas
Último mensaje Febrero 03, 2008, 06:13:34 am
por m3t4k0m
question
Necesito libro Aprenda practicando Visual Basic 2005 usando Visual Studio 2005

Iniciado por jrfelipe

0 Respuestas
1330 Vistas
Último mensaje Agosto 13, 2012, 08:45:14 pm
por jrfelipe
xx
instalar ocx de visual basic 6 en visual .net

Iniciado por safer

1 Respuestas
1647 Vistas
Último mensaje Diciembre 18, 2009, 03:40:17 am
por mDrinky
question
Aplicacion en Visual Studio 2015 (Visual Basic 2015)

Iniciado por el@vivo

0 Respuestas
2658 Vistas
Último mensaje Diciembre 22, 2015, 03:43:04 pm
por el@vivo
xx
Basic-Visual Basic

Iniciado por M_BuRNeD

3 Respuestas
1888 Vistas
Último mensaje Abril 11, 2006, 11:44:01 am
por Punk-Rock