Pregunta: | 45853 - ESTRUCTURAS COMO ARGUMENTOS |
Autor: | Elías Castillo |
Estoy construyendo una DLL y quiero que algunas de las funciones de la DLL lleven como argumentos estructuras (como las API por ejemplo) pero cuando la voy a compilar me dice que no se puede.
Alguien puede decirme cómo puedo solucionar esto? Gracias |
Respuesta: | Javi M |
Si estas creando procedimientos públicos el compilador no te va a dejar compilar tipos de datos que no sean básicos.
Puedes hacer un apaño con este código. Define 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) |