• Viernes 8 de Noviembre de 2024, 22:59

Autor Tema:  Consultas  (Leído 1045 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Consultas
« en: Martes 4 de Enero de 2005, 13:59 »
0
HOLA CHICOS DE SOLOCODIGO, AQUI LES PONGO UNAS CONSULTICAS QUE TENGO, ME DIRAN BRUTO PERO REALMENTE QUIERO SABER.

1.) QUE DIFERENCIA HAY ENTRE funcion y funcion$ (Mid y Mid$).
2.) POR QUE UN API PUEDE CONTENER OTRA API.
3.) LEI UN MANUAL DE PUNTEROS EN VB, PERO NO ME QUEDO MUY CLARO, ALGUIEN ME PODRIA EXPLICAR O DECIRME DE ALGUNA PAGINA DONDE EXPLIQUEN BIEN.
4.) CUALES SON LAS FUNCIONES DE ByVal y ByRef.

GRACIAS CHAO
El pasado son solo recuerdos, el futuro son solo sueños

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Consultas
« Respuesta #1 en: Martes 4 de Enero de 2005, 15:25 »
0
Hola Radical.

Yo creo que...

1- Con el sufijo $ (o #, !, &, ..) concretas el tipo de datos devuelto por la función o incluso el tipo de dato de un valor constante, por ejemplo: x = 132& asigna a x 4 bytes (tipo long en vb) con el valor 123. Y en la práctica dirás tú, ¿cuál es la diferencia?. Pos no sé, pero tu prueba a a hacer esto: If Command = "" y luego me cuentas (Lo correcto sería If Command$ = ""). Desde luego en vb no hay muchos problemas de casts de los que ocuparse, pero si usas funciones de otros lenguajes de más bajo nivel (el api de windows, por ejemplo) el tema puede ser importante.

2- Pos no te sé que dicir... yo lo veo con un ejemplo: en windows el GDI es la parte del sistema operativo que se ocupa de operaciones gráficas. Creo que se podría decir que el gdi es un api por si mismo, en el sentido de que proporciona funciones, tipos y demás (una interface) para realizar un conjunto de funciones especificas. A su vez, windows proporciona otro conjunto de apis para ocuparse de temas como la impresión, mensajería, comunicaciones, etc. Todas estas son apis dentro del api de windows. Supongo que los tiros van por ahí: una forma de organizar las distintas apis.

3- En vb el uso que se hace de punteros a alto nivel es inexistente (excepto en el caso de argumentos ByRef, pero eso va luego) De hecho las funciones vb que devuelven direcciones de variables o funciones (varptr, AddressOf, lngPtr, etc) parece que están escondidas a propósito. Sin embargo te vuelvo a decir lo del punto 1. En llamadas funciones externas, en el caso de la subclasificación, incluso usando funciones de winapi como timer, es indispensable el uso de punteros, tanto a variables como a funciones.
Para aprender cosas sobre punteros creo que lo mejor es que te olvides de vb y le eches un vistazo a algunos manuales de C, donde el uso de punteros es un plato fuerte.

4- ByVal y ByRef sirven para indicar la forma en la que se pasa un parámetro a un método o función.
Byval pasa el argumento 'por valor' es decir, es como si el método al que llamas creara una copia de la variable que le estás pasando. Los cambios que se hagan en el método al valor de la variable no se verán reflejados en variable pasada a la función.
Por ejemplo para este código:
Código: Text
  1.  
  2. 'Esto no tiene mucho sentido...
  3. Private Sub A ()
  4.     Dim i as integer
  5.     i = 100
  6.     Sumar10 i
  7.     MsgBox i
  8. End Sub
  9.  
  10. Private Sub Sumar10(Byval Numero As integer)
  11.    Numero = Numero + 10
  12. End Sub
  13.  
  14.  
El valor de i al final seguiría siendo 100

ByRef pasa el argumento por referencia, es decir, se pasa a la función o método llamado la dirección de la variable (el puntero) que se le pasa. Los cambios que se hagan el la función afectarán al valor de la variable original (ya que realmente se trabaja de verdad con ella).
Fíjate ahora en esto:
Código: Text
  1.  
  2. Private Sub A ()
  3.     Dim i as integer
  4.     i = 100
  5.     Sumar10 i
  6.     MsgBox i
  7. End Sub
  8.  
  9. Private Sub Sumar10(ByRef Numero As integer)
  10.    Numero = Numero + 10
  11. End Sub
  12.  
  13.  
El valor de i sería 110.

Aparte de la posible afección del valor de la variable original, en vb, este paso de argumentos por valor o por referencia es transparente para el usuario.

Güeno, espero haberme explicado más o menos.

Abur.