ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

enviar email pelo fortesreport

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
claudiojose
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 28 de Fevereiro de 2014
Mensagens: 102

MensagemEnviada: Seg Jun 12, 2017 4:18 pm    Assunto: enviar email pelo fortesreport Responder com Citação

Ola pessoal,

Já postei algo sobre este assunto, mas ainda não consegui resolver

Seria enviar um email de um relatório gerado no fortes reporter, clicando no
botão enviar do próprio fortes

Eu tenho um que funciona perfeitamente no Delphi 7 (sendemail)
mas tentando utilizar no Delphi 10, não funciona

Grato

Claudio
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Seg Jun 12, 2017 4:50 pm    Assunto: Responder com Citação

Basta prestar atenção no unicode das string e tudo se resolve.
Num passado tive o mesmo problema.
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
claudiojose
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 28 de Fevereiro de 2014
Mensagens: 102

MensagemEnviada: Seg Jun 12, 2017 5:01 pm    Assunto: email com o fortes Responder com Citação

Obrigado Pela colaboração

Consegui acertar em partes
Só que quando clico em enviar, abre o OutLook e após o envio,
me da um erro de invalid point operation

E até agora não consegui resolver isso.
Att

Claudio
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Seg Jun 12, 2017 5:33 pm    Assunto: Responder com Citação

Chegou a Debuggar pra ver em qual trecho ocorre o erro?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
claudiojose
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 28 de Fevereiro de 2014
Mensagens: 102

MensagemEnviada: Seg Jun 12, 2017 10:24 pm    Assunto: email com o fortes Responder com Citação

Aparece o erro invalid point operation na linha sinalizada.


with TFormSendMailOptions.Create(nil) do
try
Pages:=aPages;
// EditAssunto.Text:=Pages.Title;
// procura no diretório corrente
GetDir(0,s);
preview:=IncludeTrailingBackslash(s)+SelfFileName;
// se não achar procura no diretório do executável
if not FileExists(preview) then
preview:=IncludeTrailingBackslash(ExtractFilePath(Application.ExeName))+SelfFileName;
// valida os filtros
pdf:=SaveFilterByFileName('.pdf');
rtf:=SaveFilterByFileName('.rtf');
htm:=SaveFilterByFileName('.htm');
// habilita botões
RadioButtonEXE.Enabled:=FileExists(preview);
RadioButtonPDF.Enabled:=(pdf<>nil);
RadioButtonRTF.Enabled:=(rtf<>nil);
RadioButtonHTM.Enabled:=(htm<>nil);
// seta filtro default
if not RadioButtonEXE.Enabled then
begin
if RadioButtonPDF.Enabled then
RadioButtonPDF.Checked:=True
else if RadioButtonRTF.Enabled then
RadioButtonRTF.Checked:=True
else if RadioButtonHTM.Enabled then
RadioButtonHTM.Checked:=True
else
RadioButtonEXE.Checked:=False;
end;
//
go:=(ShowModal=mrOk);
if not go then
Exit;
// seleciona filtro
if RadioButtonPDF.Checked then
ftr:=pdf
else if RadioButtonRTF.Checked then
ftr:=rtf
else if RadioButtonHTM.Checked then
ftr:=htm
else if RadioButtonEXE.Checked then
ftr:=nil
else
Exit;
if ftr=nil then
tmpext:='.exe'
else
tmpext:=ftr.DefaultExt;
//
tmpfile:=ExpandFileName(ChangeFileExt(EditAssunto.Text+'.',tmpext));
try
// faz selfprint
if ftr=nil then
MakeSelfPrint(preview,tmpfile,Pages)
else
begin
// filtra
ftr.FileName:=tmpfile;
//// FilterPages(Pages,ftr);
/// FilterPages(Pages,ftr,0,999,'',0);
filterpages(pages,ftr,1,999,'',0);
end;
with TSendMail.Create(nil) do
try
Subject:=EditAssunto.Text;
Body :='';
s:=EditDestinatarios.Text;
while s<>'' do
begin
i:=Pos(';',s);
if i=0 then
i:=Length(s)+1;
Recipients.Add(Copy(s,1,i-1));
Delete(s,1,i);
end;
Attachments.Add(tmpfile);
EditDialog:=CheckBoxAbrir.Checked;
Send;
finally
Free;
end;

finally
SysUtils.DeleteFile(tmpfile);
end;
finally
free ; <-------------- aqui acontece o erro acima mencionado.
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Ter Jun 13, 2017 1:42 pm    Assunto: Responder com Citação

Não sei se vai resolver, mas tenta trocar o Free onde ocorre o erro por FreeAndNil
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Ter Jun 13, 2017 2:43 pm    Assunto: Responder com Citação

Código:
invalid point operation


operação invalida com um determinado ponteiro, tipica mensagem de erro que ocorre com delphi com suporte a unicode, pois é provável que esteja a chamar algo do tipo pchar() em algum canto e agora deve ser substituído por pansichar(ansistring())

uma vez que pchar() é um ponteiro e que em versões mais novas do Delphi é equivalente a pansichar(ansistring()), assim inicialmente pedi para que forsse revisado a questão do unicode, pois é a unica coisa que deixaria as coisa incompativel entre o delphi 7 e as versões mais recente dentre outas coisa esta seria a mais relevante a dá uma atenção maior.

O erro ocorre uma linha executada antes do free.
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
claudiojose
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 28 de Fevereiro de 2014
Mensagens: 102

MensagemEnviada: Qua Jun 14, 2017 2:23 pm    Assunto: enviar por email Responder com Citação

Obrigado pelo tempo dispensado, para me ajudar

mas poderia me dizer como converter estar duas linhas abaixo para o
Delphi 2010 no 7 funciona perfeitamente

Grato

Claudio



att^[i].lpszPathName:=StrPCopy(new(TlpszPathname)^,Attachments[i]);
att^[i].lpszFileName:=StrPCopy(new(TlpszFileName)^,ExtractFileName(Attachments[i]));
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
claudiojose
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 28 de Fevereiro de 2014
Mensagens: 102

MensagemEnviada: Seg Jun 19, 2017 11:14 am    Assunto: enviar por email Responder com Citação

Acredito que consegui resolver

Obrigado pela diga strak2012

Att

Claudio
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB