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...
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
Curtir tópico
+ 0
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.
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
Clique aqui para fazer login e interagir na Comunidade :)