Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2004
cht666cht cht666cht is offline
Miembro
 
Registrado: nov 2003
Posts: 14
Poder: 0
cht666cht Va por buen camino
Lanzando una excepción en una DLL

Hola a todos, estoy haciendo una DLL con algunas y cuando hay algún error utilizo el raise Exception.Create...

El problema es que al usar la DLL desde una aplicación, cuando se lanza una de estas excepciones en vez de mostrarme el mensaje de la excepcion que he creado, me muestra algo asi como:
"Exception Exception in module xxx.dll at xxxxxxxx."

mirando en el Forms.pas, he visto que en el método TApplication.HandleException se comprueba que la excepción sea de tipo Exception (...if ExceptObject is Exception then...), y me imagino que lo que está pasando es que la aplicación no reconoce la excepción lanzada desde la DLL como del mismo tipo 'Exception' que el definido en la aplicación, y por eso la trata como una excepción del SO.

A alguien le ha pasado algo parecido? según la ayuda del delphi tendría que funcionar correctamente. Y añadiendo el sharemem en los uses, por probar, tampoco lo he solucionado.
Responder Con Cita
  #2  
Antiguo 11-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Yo en DLL´s utilizo una filosofía similar a la de Windows... Las funciones exportadas, como resultado retornan un valor que indican si se ejecutaron correctamente, de no ser así, tengo una función similar a GetLastError y FormatMessage...

Es solo una idea..
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 11-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si tanto la aplicación como la dll se compilan con paquetes de ejecución entonces funciona correctamente.

Por otra parte es curioso que aun cuando el mensaje de la excepción no se muestra correctamente, éste si se incluye en la propiedad Message del objeto excepción:

Código:
try
except
  on E: Exception do
    ShowMessage(E.Message);
end;
// Saludos
Responder Con Cita
  #4  
Antiguo 12-02-2004
cht666cht cht666cht is offline
Miembro
 
Registrado: nov 2003
Posts: 14
Poder: 0
cht666cht Va por buen camino
Lo acabo de probar y funciona perfectamente, gracias!
lo que esto supongo que me obliga a distribuir los .DCPs utilizados. Hay alguna manera rápida de saber cuales son?

lo del try...except ya me habia dado cuenta pero claro, no voy a estar encerrando cada llamada a las funciones de la DLL en try...excepts, para eso utilizo un código de retorno como decia delphi.com.ar
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:54:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi