FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Error de acceso y liberación de puntero
Amigos del foro.
Acudo a los amigos a apoyarme al resolver un problema que tengo. para iniciar el problema me esta ocurriendo cuando usa le versión Delphi 6, ya que la misma codificación en Delphi mas actualizado Delphi Tokyo trabaja todo bien. Yo necesito hacer que esto trabaje en delphi 6 ya que el sistema esta usando esa version. Hay una función de un componente ActiveX y su definición de la importación del componente es:
yo he creado el siguiente proc que si funciona en la versión Tokyo:
El error que me muestra la linea ( CardInformation2 := PWideChar(CardInformation^) ) es: "Access violation at address 00404A83 in module 'TestCInf.exe'. Read of address 0034001C'" Por favor necesito que me puedan ayudar a identificar el problema, como les mencionaba esto si funciona en una versión mas reciente de delphi, el componente activex requiere de memoria dinámica y por ello se reserva la memoria y luego se libera. pero en Delphi 6 no me esta permitiendo. Muchas gracias a los amigos que me puedan responder sugiriendo una solución o compartiendo un ejemplo para poder validar la solución. de antemano muchas gracias. |
#2
|
||||
|
||||
He unido ambos hilos porque es lo mismo
|
#3
|
||||
|
||||
Gracias amigo, pero no tienes una idea de lo que puede estar pasando?
|
#4
|
||||
|
||||
¿Por qué no usas el código que te ha puesto de ejemplo duilioisola?
|
#5
|
||||
|
||||
si quito en carácter que el indica "^"
al compilar me muestra el sgte error: "Types of actual and formal var parameters must be identical"
como mencionaba el ejemplo que publico si me esta funcionando en la versión mas actual. No se porque lo mismo no me funciona en D6. Gracias por tu ayuda. |
#6
|
||||
|
||||
A ver si es por otro parámetro, porque así a simple vista, diría que el que no debería funcionar es el que has puesto el "^".
|
#7
|
||||
|
||||
Casimiro
la definición de la función en el lenguaje que crearon el componente es: Código:
HRESULT ReadInformation([in] BSTR* szCard, [in] int iTimeChip, [in] int iTimeMag, [in] int iType, [in] BSTR messMag, [out, retval] int *rc)
por ello como te decía a la prueba que indico en el post si quito el carácter "^" me muestra error y muy probable por la definición de la importación. Si bien pude resolver la forma de obtener la información del puntero, la cosa que todo se soluciono en Delphi Tokyo. el problema es que el app que va usar esa función esta trabajando con Delphi 6 y al hacer la misma prueba ahí no me funciona ya que me genera los errores que menciono. Tienes un ejemplo o otra forma de trabajar las funciones de componentes ActiveX con Memoria Dinamica? actualmente se esta usando ese componente con otras funciones que contiene, la diferencia que la cadena que esta devolviendo lo hace como resultado de la función y estas funciones trabajan normal en D6. pero en esta función que menciono el resultado lo están devolviendo por un parámetro por referencia. Última edición por Maniches fecha: 21-09-2018 a las 00:28:58. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como quitar referencia de un componente | steelha | Varios | 7 | 25-02-2013 15:48:58 |
Componente ActiveX importardo da error | jmlifi | OOP | 5 | 03-05-2010 14:04:33 |
Componente activex | levache | Internet | 6 | 30-12-2006 05:01:11 |
Ver componente ActiveX | piccolo2101 | Varios | 1 | 05-12-2005 09:59:23 |
Eliminar componente ActiveX | Coco_jac | Varios | 5 | 08-08-2005 18:43:52 |
|