Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: DarkMatrix en 12 Agosto 2010, 02:56 am



Título: Guardar un UDT
Publicado por: DarkMatrix en 12 Agosto 2010, 02:56 am
Buenas :P, esta vez tengo una pregunta y es que he buscado pero no he encontrado mucho, queria saber si es posible grabar los datos de una estructura UDT como string u otro tipo de variable, para luego cargar los datos de nuevo asignadolo al UDT. He visto que se puede grabar una UDT en un archivo binario, pero necesito que no sea en un archivo binario.

PD: Necesito espesificamente guardar los datos de la UDT en una campo de una base de datos, para luego poder leer esa UDT otra vez.


Título: Re: Guardar un UDT
Publicado por: LeandroA en 12 Agosto 2010, 04:56 am
podes usas copymemory de todas formas creo que tuvieras que buscar otra opcion a tu problema.

un ejemplo, solo que utilize todos string porque vi que en algunas partes si mesclamos string con longs o bytes hay algo que se corre y no esta bien, asi que fijate si te sirve o alguien mas sabe bien como pasar las variables con copymemory

Código:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Private Type MiUDT
    Nombre As String * 50
    Apellido As String * 50
    Edad As String * 3 'as byte < mmm no me funciona bien
End Type

Private Sub Form_Load()
    Dim MU1 As MiUDT
    Dim MU2 As MiUDT
    Dim sBuff As String
   
    sBuff = String(LenB(MU1), vbNullChar)
   
    With MU1
        .Nombre = "Leandro"
        .Apellido = "Ascierto"
        .Edad = 20 ':)
    End With
   
    CopyMemory ByVal sBuff, ByVal MU1, LenB(MU1)
   
    CopyMemory ByVal MU2, ByVal sBuff, LenB(MU2)
   
    With MU2
        Debug.Print .Nombre
        Debug.Print .Apellido
        Debug.Print .Edad
    End With
   
End Sub

Saludos.