Imprimir página | Cerrar ventana

Cambio de 32 bits a 64 bits

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85489
Fecha de impresión: 23/Abril/2024 a las 17:41


Tema: Cambio de 32 bits a 64 bits
Publicado por: Entrenador10
Asunto: Cambio de 32 bits a 64 bits
Fecha de publicación: 16/Septiembre/2020 a las 11:46
Buenos días, tengo una aplicación en Access 2010 de 32 bits que la he convertido para Access 2010 de 64 bits.

Ya tengo depurado todo el código. Sólo me resta convertir el módulo que adjunto. Al depurarlo me señala un error en el campo marcado en amarillo y me sale una ventana emergente donde indica que no coinciden los tipos. ¿Cómo puedo solucionarlo? Muchas gracias.

Private Function HandleToDeviceID(hDevice As Long) As String

    Dim strDeviceID As String

    Dim cDeviceID   As Long

 

    If CM_Get_Device_ID_Size(cDeviceID, hDevice, 0) = 0 Then

        strDeviceID = Space(cDeviceID)

 

        If CM_Get_Device_IDA(hDevice, StrPtr(strDeviceID), cDeviceID, 0) > 0 Then

            strDeviceID = StrConv(strDeviceID, vbUnicode)

            strDeviceID = Left(strDeviceID, cDeviceID)

        Else

            strDeviceID = ""

        End If

    End If

 

    HandleToDeviceID = strDeviceID

End Function

 





Respuestas:
Publicado por: Mihura
Fecha de publicación: 16/Septiembre/2020 a las 12:12
¿Y cuál es la línea amarilla?

Probablemente está esperando un tipo LongPtr en vez de un Long.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Entrenador10
Fecha de publicación: 16/Septiembre/2020 a las 12:39
Muchas gracias, Mihura, por tu rápida respuesta. Perdón, que al copiarlo no lo he marcado. Marca el error en StrPtr. Ayer puse el LongPtr y entonces me marcaba el error en cDeviceID. Gracias


Publicado por: Mihura
Fecha de publicación: 16/Septiembre/2020 a las 13:03
Eso está tirando de funciones ... API's ... postea aquí también como las has cambiado





-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Entrenador10
Fecha de publicación: 16/Septiembre/2020 a las 13:11
Lo único que he hecho ha sido incluir el término PtrSafe en todas las instrucciones Public Function, Quedando las instrucciones así Public PtrSafe Function. Hice la prueba eliminando la instrucción que me está dando problemas, y se compiló perfectamente y funcionó bien en Access 2010 de 64 bits


Publicado por: Mihura
Fecha de publicación: 16/Septiembre/2020 a las 13:48
Hay que hacer mas cosas:

https://docs.microsoft.com/es-es/office/client-developer/shared/compatibility-between-the-32-bit-and-64-bit-versions-of-office

https://docs.microsoft.com/es-es/office/troubleshoot/office-suite-issues/win32api_ptrsafe-with-64-bit-support


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Entrenador10
Fecha de publicación: 16/Septiembre/2020 a las 14:04
Genial. Reviso los dos enlaces. Muchas gracias



Imprimir página | Cerrar ventana