Tipo de dato Variante

Tutoriales de referencia a la programación en Pauscal

Tipo de dato Variante

Notapor PowerDeath » Dom Dic 28, 2014 2:24 am

El tipo de dato Variante puede ser aplicado en Pauscal con una simple estructura de tipo entero.

Código: Seleccionar todo
Estruc Variante,Tipo,Reservado,Ptr:Entero

o preferiblemente.

Código: Seleccionar todo
Estruc Variante,Tipo:Byte,Reservado:Booleano,Ptr:Entero

Para ahorrar unos bytes de memoria.

Supongamos lo siguiente
Tenemos este código en Pauscal.

Código: Seleccionar todo
Importar "Pauscal.prp"

Estruc Variante,Tipo:Byte,Reservado:Booleano,Ptr:Entero

Proc EnteroDePtrEnt(Referencia PtrEnt:Entero):Entero
      Var @Ptr:Entero
      Ptr@ = PtrEnt
      Devolver Ptr
   FinProc
   
   Proc CadLongA(Referencia Expresión:Variante):Entero Exportar ' VER <<<<<
      Mensaje("Tipo de dato: " + EntCad(Expresión.Tipo))
      Mensaje("Puntero al dato: " + EntCad(Expresión.Ptr))
      Si Expresión.Tipo = 8 Entonces Devolver CadLong(EntCad(EnteroDePtrEnt(Expresión.Ptr)))
   FinProc


Tenemos este código en Visual Basic 6.0
Código: Seleccionar todo
Private Declare Function CadLongA Lib "Cadena.dll" (Dark As Variant) As Long


Y lo utilizamos de la siguiente manera
Código: Seleccionar todo
Msgbox CadLong(454545)


Lo que pasa es que los miembros del parametro #1 de la función CadLongA sera rellenada con valores de tipo entero.

Ignorando el miembro "Reservado" obtenemos:

1_ El tipo de dato [Miembro Tipo].
2_ El puntero al dato [Miembro Ptr].

Con una estructura de control podemos realizar diferentes acciones.

Por ejemplo:

Código: Seleccionar todo
Seleccionar Expresión.Tipo
Caso 0 ' Un tipo de dato <<
   RecuperarDatoDePuntero(Expresión.Ptr)
   [Trabajar con el dato obtenido]
Caso 1 ' Otro tipo de dato <<
   RecuperarDatoDePuntero(Expresión.Ptr)
   [Trabajar con el dato obtenido]
FinSeleccionar


Les dejo este util enlace: https://en.wikipedia.org/wiki/Variant_type#Types

¡Saludos!
Imagen
PowerDeath
 
Mensajes: 160
Registrado: Sab Ago 11, 2012 5:29 am

Sponsor


Volver a Manuales, Tutoriales y Videotutoriales

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron