| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
claudiojose Aprendiz

Registrado: Sexta-Feira, 28 de Fevereiro de 2014 Mensagens: 102
|
Enviada: Seg Jun 12, 2017 4:18 pm Assunto: enviar email pelo fortesreport |
|
|
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 |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Seg Jun 12, 2017 4:50 pm Assunto: |
|
|
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 |
|
 |
claudiojose Aprendiz

Registrado: Sexta-Feira, 28 de Fevereiro de 2014 Mensagens: 102
|
Enviada: Seg Jun 12, 2017 5:01 pm Assunto: email com o fortes |
|
|
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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Seg Jun 12, 2017 5:33 pm Assunto: |
|
|
| Chegou a Debuggar pra ver em qual trecho ocorre o erro? |
|
| Voltar ao Topo |
|
 |
claudiojose Aprendiz

Registrado: Sexta-Feira, 28 de Fevereiro de 2014 Mensagens: 102
|
Enviada: Seg Jun 12, 2017 10:24 pm Assunto: email com o fortes |
|
|
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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Ter Jun 13, 2017 1:42 pm Assunto: |
|
|
| Não sei se vai resolver, mas tenta trocar o Free onde ocorre o erro por FreeAndNil |
|
| Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Ter Jun 13, 2017 2:43 pm Assunto: |
|
|
| 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 |
|
 |
claudiojose Aprendiz

Registrado: Sexta-Feira, 28 de Fevereiro de 2014 Mensagens: 102
|
Enviada: Qua Jun 14, 2017 2:23 pm Assunto: enviar por email |
|
|
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 |
|
 |
claudiojose Aprendiz

Registrado: Sexta-Feira, 28 de Fevereiro de 2014 Mensagens: 102
|
Enviada: Seg Jun 19, 2017 11:14 am Assunto: enviar por email |
|
|
Acredito que consegui resolver
Obrigado pela diga strak2012
Att
Claudio |
|
| Voltar ao Topo |
|
 |
|