PDA

Ver la Versión Completa : problema con componente com


consuldelphi
02-07-2008, 17:49:39
tengo un objeto com en delphi (es del tipo Automation object)
en la seccion donde se implementan las funciones, tengo el caso de una funcion
que hace una llamada a una funcion de un dll.

Este objeto com me genera un dll que registro.
el problema es que al registrar el dll (el objeto com) me lo registra y luego me da el error:
La instruccion en "0x0000000" hace referencia a la memoria en "0x00000000" la memoria
no se puede "written".
Lo extraño es que el error me da solo cuando hago la llamada a esa función de ese otro dll.

coso
02-07-2008, 17:59:11
Hola. Por lo que se ve estas intentando acceder a algun objeto que no has dado memoria anteriormente, o bien lo has liberado antes de la llamada. Usando el debugger (f5,f7,f8) sabras exactamente en que linea te salta. Si puedes poner el codigo donde te salta quiza podamos ayudarte mejor. Saludos.

consuldelphi
02-07-2008, 20:21:56
Este es un estracto del codigo que estoy usando. no lo puedo debugiar por ser dll
pero la diferencia es cuando quito y pongo la "linea problema" la cual se muestra en el codigo.
muchas gracias desde ya por la ayuda.



Public
...
...

function obtenerDato(prmser,prmusuario,prmmsg:OleVariant): Widestring:safecall;
end;

function ObtenerCalculoWeb (prmdec,prmcorrel,prmefec:Pchar): Integer; stdcall; external 'Calculoweb.dll' name 'ObtenerCalculoweb';


implementation


....
...


Function TClassDatos.obtenerDato(prmser,prmusuario,prmmsg:OleVariant): Widestring

var resultado:integer
begin

....
....

resultado:=ObtenerCalculoWeb(prmdec,prmcorrel,prmefec); {linea problema}

....
....

end;

coso
02-07-2008, 20:25:55
Todos los PChar son diferentes de nil? si no es eso, es que la funcion esta mal programada. Si pudieras poner su codigo...

consuldelphi
02-07-2008, 20:57:26
si son diferentes del nil. la situación es que yo no tengo el codigo del dll que tiene las funciones que uso en este caso (solo me dieron el dll). Lo raro es que utilicé este mismo codigo solo que para un programa con una forma normal y alli si me funciona y no me da ningun error. El problema es para este que es un dll

coso
02-07-2008, 21:03:02
:confused: es un poco aventurar pero... es probable que cuando la usases sin ser dll la usases tambien con objetos globales a los que dabas memoria por otro lado? o que exista alguna funcion tipo IniciarCalculoWeb

consuldelphi
02-07-2008, 21:12:55
voy a revisar el codigo y tomar en cuenta tus sugerencias.
muchas gracias