• Viernes 8 de Noviembre de 2024, 19:49

Autor Tema:  Re: DEfinir EstrUctuRas Type En VB y CoMo se AccEsaN  (Leído 2206 veces)

alons

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: DEfinir EstrUctuRas Type En VB y CoMo se AccEsaN
« en: Viernes 23 de Mayo de 2003, 19:10 »
0
El MOtiVo de LA COnsUltA  es por que necesito como se declara aun estructura (asi como en c++ con varios campos)en vb y como se accede

Se que  en c o c++ se accede clientes.ncuenta=124,quisiera saber como se accede o cual es el formata para VB

Agradeciendoles de antemano la respuesta

JKim

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
DEfinir EstrUctuRas Type En VB y CoMo se AccEsaN
« Respuesta #1 en: Viernes 23 de Mayo de 2003, 20:00 »
0
Buenas!

Te envio un extracto de la ayuda de MSDN (espero que te sirva, por cierto yo tb vengo de C) Suerte


:suerte:
Crear tipos de datos propios


Se pueden combinar variables de varios tipos diferentes para crear tipos definidos por el usuario (conocidos como structs en el lenguaje de programación C). Los tipos definidos por el usuario son útiles si se quiere crear una única variable que registre varias unidades de información relacionadas.

Puede crear un tipo definido por el usuario con la instrucción Type, que debe colocar en la sección Declaraciones del módulo. Los tipos definidos por el usuario pueden declararse como Private o como Public mediante la palabra clave apropiada. Por ejemplo:

Private Type MiTipoDeDatos
–o bien–

Public Type MiTipoDeDatos

Por ejemplo, podría crear un tipo definido por el usuario que registrara información acerca del sistema de un equipo:

' Declaraciones (de un módulo estándar).
Private Type SystemInfo
   CPU As Variant
   Memory As Long
   VideoColors As Integer
   Cost As Currency
   PurchaseDate As Variant
End Type

Declarar variables de un tipo definido por el usuario
Para el mismo tipo definido por el usuario puede declarar variables locales, variables privadas de módulo o variables públicas de módulo:

Dim MiSistema As SystemInfo, SuSistema As SystemInfo

En la tabla siguiente se ilustra dónde y con qué alcance puede declarar los tipos definidos por el usuario y sus variables.



Procedimiento/Módulo Puede crear un tipo definido por el usuario como... Las variables de un tipo definido por el usuario pueden declararse...
Procedimientos No aplicable Solamente locales
Módulos estándar Privado o público Privadas o públicas
Módulos de formulario Solamente privado Solamente privadas
Módulos de clase Privado o público Privadas o públicas


Nota   Si realiza declaraciones de variables usando la palabra clave Dim, los tipos definidos por el usuario en módulo de clase o estándar serán Public de forma predeterminada. Si quiere que un tipo definido por el usuario sea privado, asegúrese de declararlo usando la palabra clave Private.

Asignar y recuperar valores
Asignar y recuperar los valores de los elementos de esta variable es similar a establecer y obtener propiedades:

MiSistema.CPU = "486"
If MiSistema.PurchaseDate > #1/1/92# Then

También puede asignar una variable a otra si ambas son del mismo tipo definido por el usuario. En la línea de código siguiente se asignan todos los elementos de una variable a los mismos elementos de la otra variable.

SuSistema = MiSistema

Tipos definidos por el usuario que contienen matrices
Un tipo definido por el usuario puede contener una matriz normal (de tamaño fijo). Por ejemplo:

Type SystemInfo
   CPU As Variant
   Memory As Long
   DiskDrives(25) As String   ' Matriz de tamaño fijo.
   VideoColors As Integer
   Cost As Currency
   PurchaseDate As Variant
End Type

También puede contener una matriz dinámica.

Type SystemInfo
   CPU As Variant
   Memory As Long
   DiskDrives() As String      ' Matriz dinámica.
   VideoColors As Integer
   Cost As Currency
   PurchaseDate As Variant
End Type

Puede tener acceso a los valores de una matriz dentro de un tipo definido por el usuario de la misma manera en que tiene acceso a las propiedades de un objeto.

Dim MiSistema As SystemInfo
ReDim MiSistema.DiskDrives(3)
MiSistema.DiskDrives(0) = "1.44 MB"

También puede declarar una matriz de tipos definidos por el usuario:

Dim TodosSistemas(100) As SystemInfo

Siga las mismas reglas para tener acceso a los componentes de esta estructura de datos.

TodosSistemas(5).CPU = "386SX"
TodosSistemas(5).DiskDrives(2) = "SCSI de 100 MB"

Pasar tipos definidos por el usuario a procedimientos
Puede pasar argumentos de procedimiento mediante un tipo definido por el usuario.

Sub FillSystem (UnSistema As SystemInfo)
   UnSistema.CPU = lstCPU.Text
   UnSistema.Memory = txtMemory.Text
   UnSistema.Cost = txtCost.Text
   UnSistema.PurchaseDate = Now
End Sub

Nota   Si desea pasar un tipo definido por el usuario a un módulo de formulario, el procedimiento debe ser privado.

Puede devolver tipos definidos por el usuario desde funciones y puede pasar una variable de un tipo definido por el usuario a un procedimiento como un argumento. Los tipos definidos por el usuario siempre se pasan por referencia, de modo que el procedimiento puede modificar el argumento y devolverlo al procedimiento que lo ha llamado, como se muestra en el ejemplo anterior.

Nota   Debido a que los tipos definidos por el usuario siempre se pasan por referencia, todos los datos contenidos en dichos tipos se pasarán y se devolverán desde el procedimiento. En el caso de tipos definidos por el usuario con matrices de gran tamaño, esto podría originar una reducción de las prestaciones, especialmente en aplicaciones cliente/servidor, en las que el procedimiento se puede ejecutar desde un equipo remoto. En tal caso, es preferible extraer y pasar únicamente los datos necesarios del tipo definido por el usuario.

Para obtener más información   Para obtener más detalles acerca del paso por referencia, vea "Pasar argumentos a procedimientos" en "Fundamentos de programación".

Tipos definidos por el usuario que contienen objetos
Los tipos definidos por el usuario también pueden contener objetos.

Private Type AccountPack
   frmInput as Form
   dbPayRollAccount as Database
End Type

Sugerencia   Como el tipo de datos Variant puede almacenar muchos tipos de datos diferentes, puede usar una matriz Variant en muchas situaciones en las que usaría un tipo definido por el usuario. De hecho, una matriz Variant es más flexible que un tipo definido por el usuario, ya que puede modificar el tipo de los datos almacenados en cada elemento en cualquier momento y puede convertir la matriz en dinámica para modificar su tamaño cuando sea necesario. Sin embargo, una matriz Variant siempre utiliza más memoria que un tipo definido por el usuario equivalente.

Anidar estructuras de datos
El anidamiento de estructuras de datos puede ser tan complejo como se quiera. De hecho, los tipos definidos por el usuario pueden contener otros tipos definidos por el usuario, como se muestra en el ejemplo siguiente. Para hacer que el código sea más legible y fácil de depurar, procure escribir en un único módulo todo el código de los tipos de datos definidos por el usuario.

Type DriveInfo
   Type As String
   Size As Long
End Type

Type SystemInfo
   CPU As Variant
   Memory As Long
   DiskDrives(26) As DriveInfo
   Cost As Currency
   PurchaseDate As Variant
End Type

Dim AllSystems(100) As SystemInfo
AllSystems(1).DiskDrives(0).Type = "Floppy"