GARANTIR DESCONTO

Fórum Erros de DLL´s ao dar um ShellExecute. #351335

03/01/2008

0

Olá!

Adicionei em meu código um ShellExecute para abrir o executável do programa do Banrisul (TEF), mas ao abrí-lo está me retornando umas mensagens de erros, de dll, pelo visto. Está assim meu código:

[i:6b5e3dad02]procedure TForm1.btnBanricomprasClick(Sender: TObject);
VAR
F: TEXTFILE;
S: STRING;
begin
AssignFile(F,´C:\TEF_DISC\BANRISUL\Req\IntPos.tmp´);
REWRITE(F); //cria arquivo
S:=´000-000 ´ + ´= ´ + dbeHeader.Text;
WRITELN(F,S);//adiciona nova linha no arquivo
S:=´001-000 ´ + ´= ´ + dbeIdentificacao.Text;
WRITELN(F,S);//adiciona nova linha no arquivo
S:=´002-000 ´ + ´= ´ + dbeDocFiscal.Text;
WRITELN(F,S);
S:=´003-000 ´ + ´= ´ + dbeValorTotal.Text;
WRITELN(F,S);
S:=´004-000 ´ + ´= ´ + dbeMoeda.Text;
WRITELN(F,S);
S:=´005-000 ´ + ´= ´ + dbeCMC7.Text;
WRITELN(F,S);
S:=´006-000 ´ + ´= ´ + dbeTipoPessoa.Text;
WRITELN(F,S);
S:=´007-000 ´ + ´= ´ + dbeDocPessoa.Text;
WRITELN(F,S);
S:=´008-000 ´ + ´= ´ + dbeDataCheque.Text;
WRITELN(F,S);
S:=´010-000 ´ + ´= ´ + dbeNomeRede.Text;
WRITELN(F,S);
S:=´012-000 ´ + ´= ´ + dbeNumTransacao.Text;
WRITELN(F,S);
S:=´022-000 ´ + ´= ´ + dbeDataTransacao.Text;
WRITELN(F,S);
S:=´023-000 ´ + ´= ´ + dbeHoraTransacao.Text;
WRITELN(F,S);
S:=´027-000 ´ + ´= ´ + dbeFinalizacao.Text;
WRITELN(F,S);
S:=´033-000 ´ + ´= ´ + dbeBanco.Text;
WRITELN(F,S);
S:=´034-000 ´ + ´= ´ + dbeAgencia.Text;
WRITELN(F,S);
S:=´035-000 ´ + ´= ´ + dbeAgenciaDC.Text;
WRITELN(F,S);
S:=´036-000 ´ + ´= ´ + dbeContaCorrente.Text;
WRITELN(F,S);
S:=´037-000 ´ + ´= ´ + dbeContaCorrenteDC.Text;
WRITELN(F,S);
S:=´038-000 ´ + ´= ´ + dbeNumeroCheque.Text;
WRITELN(F,S);
S:=´039-000 ´ + ´= ´ + dbeNumeroChequeDC.Text;
WRITELN(F,S);
S:=´041-000 ´ + ´= ´ + dbeCodBarras.Text;
WRITELN(F,S);
S:=´042-000 ´ + ´= ´ + dbeTrailer.Text;
WRITELN(F,S);
CLOSEFILE(F);//fecha arquivo
RenameFile(´C:\TEF_DISC\BANRISUL\Req\IntPos.tmp´,´C:\TEF_DISC\BANRISUL\Req\IntPos.001´);
ShellExecute(Handle, nil, ´c:\TEF_DISC\BANRISUL\BANRISUL.EXE´, nil, nil, Sw_ShowNormal)
end;[/i:6b5e3dad02]

Mas porque dá erro de dll, se estou executando um aplicativo que não está na minha pasta do projeto? não deveria abrir normalmente, como se eu fosse clicar no atalho? Falta algo, na linha do ShellExecute?

Grato pela atenção...


Lucas_spohr

Lucas_spohr

Responder

Posts

03/01/2008

Lucas_spohr

ficou assim, no momento:

begin
if FileExists(´C:\TEF_DISC\BANRISUL\BANRISUL.EXE´) then
ShellExecute(Application.Handle, nil, PChar(´C:\TEF_DISC\BANRISUL\BANRISUL.EXE´), nil, ´C:\TEF_DISC\BANRISUL\´, SW_SHOWNORMAL)
else
ShowMessage(´O Simulador da Rede Conveniada Banrisul não está instalado.´);
end;
end;


Fazendo desta maneira, o programa é aberto corretamente, porém, está retornando uma mensagem:
´Trans. Inválida p/ Arq. Solicitação´
[Encerra]

mas se eu abro normalmente o executável através de seu atalho, não me retorna essa mensagem.

Onde estou errando?

Grato.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar