>>>>
Me gustaria saber si es posible enviar estructuras de datos, en lugar de
simples enteros, o numeros flotantes, utilizando el control Winsock que
viene con el VB.
De momento lo que he tenido que hacer es codificar todos los campos de la
estructura en un String, y luego extraer los datos con MID$() y cosas así.
<<<<
Puedes definir un string de longitud fija lo suficientemente grande para
contener la estructura (en nº de bytes) y copiar los bytes de la estructura
al string con la función del api RtlMoveMemory y en el destino hacer lo
contrario:
Private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Dim aux As String * 50 'suponiendo que la estructura ocupa 50 bytes o menos
CopyMemory ByVal aux, MiEstructura, LenB(MiEstructura)
Y en el destino :
CopyMemory MiEstructura, ByVal aux, LenB(MiEstructura)
Un saludo.
_________________________________________________
José Rubí de la Vega
E-mail : jrubi@arrakis.es
WWW : http://www.arrakis.es/~jrubi
Podrás encontrar información sobre VB, la lista
VB-ESP y un resumen de los mensajes de la misma
No necesitas utilizar el API si como dice José Rubí de la Vega utilizas una
estructura que contenga un string de longitud fija lo suficientemente grande para contener la estructura (en nº de bytes) y copiar los bytes de la estructura original a la string del string con LSet. Con el control Winsock pasas el string y haces el paso inverso a la asignación con LSet. Es decir:
Define:
Private Type estruPaso
datos As String * 50 (supongamos que la estructura original tiene 50 bytes)
End Type
....
dim mSt as estrPaso
LSet mSt = tuEstructuraOriginal
....
pasa con Winsock mSt.datos
....
'Obtiene datos
LSet tuEstructuraOriginal = mSt
Un Saludo.
Guillermo