Ver Mensaje Individual
  #5  
Antiguo 08-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cool

Hola

Cita:
Empezado por Fizban
Aquí intento grabar la parte del mensaje de Texto a un TStream pero me da un error de violación de acceso a memoria.


Código Delphi [-]
  TidTExt(RecMensaje.MessageParts.Items[intindex]).Body.SaveToStream(TIdMessageCoder.SourceStream);
  TIdMessage.LoadFromStream(TIdMessageCoderSourceStream);

Y ahí es dónde tengo el problema.
Si el adjunto es un mensaje, en primer lugar, el MessagePart no será de la clase TidText, sino de la clase TidAttachment, que es el molde que debieras aplicar. De hacer este casteo no seguro, es muy probable que provenga el Access Violation que obtenes. En otra ocasión, te recomiendo comprobar primero la clase de un objeto, o bien realizar un casteo seguro, con el operador AS, para evitar este tipo de errores.

Ahora si he tenido delphi a mano, asi que he comprobado que el mime/type de los adjuntos que son otro mensaje es message/rfc822.

He comprobado también que esta clase (TidAttachment) no tiene método SaveToStream, pero si un método SaveToFile, con el que seguramente usando un archivo temporal o intermedio solucionarás el asunto.

Te recomiendo darte una vuelta por la ayuda de TidAttachment, y poner atención en sus propiedades: FileName, ContentType y ContentTransfer.

Hasta luego.



pd. He editado tu mensaje, que has puesto un tipo de letra demasiado grande. Si vuelve a ocurrite, se agradece que vos mismo lo edites.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 08-09-2004 a las 07:15:49.
Responder Con Cita