Fórum Interceptar msg do DOS #227223

20/04/2004

0

Olá... o fato é o seguinte... estou fazendo uma chamada do meu aplicativo para um executável do DOS... Se existir um possível erro, onde o executável do DOS não venha terminar a operação este apresentará a mensagem de erro no promt, e no ambiente DOS...

A minha dificuldade é: como eu poderia ´pegar´ esta mensagem de erro do exe DOS e transmitir para o meu aplicativo Delphi apresentando-o em um MessageBox, por exemplo...

Existe a possibilidade de interfacearmos estas mensagens? É difícil isto?

Agradeço desde já, a todos...


Nerdex

Nerdex

Responder

Posts

20/04/2004

Thiago Vidal

Voce pode tentar executar a linha da seguinte forma:

"comando.exe > arqtemp.txt"


Se o programa do DOS escrever para stdout (o que a maioria faz ou deveria fazer) dentro de arqtemp.txt estará a mensagem retornada, voce só precisa ler a mesnagem usando um FileStream ou alguma outra forma de acesso a arquivo texto e em seguita apagar o arquivo temporário.

Talvez nao seja a solução mais elegante, mas é funcional.


Responder

Gostei + 0

20/04/2004

Nerdex

Ahh... é Thiago, eu estava desconfiado disto !! pois após o erro este arquivo .tmp é criado e eu não podia deletá-lo pq estava em uso !!

Juro...!! que eu até desliguei o micro e o liguei novamente para poder deletá-los, não sabendo a fonte de criação deles !! Agora ja sei...

Mas Thiago... sobre isto = ´comando.exe > arqtemp.txt´

Eu posso embutir à uma chamada para um showmessage, comandos ShellExecute ou WinExec para a exibição direta da mensagem? Ou tenho que abrir o arquivo .temp de forma stream e assim convertê-lo para tipo string? Me dê a dica final e a mais aplicável para o caso...

Obrigado


Responder

Gostei + 0

21/04/2004

Adilsond

Como executar uma aplicação DOS e pegar seu retorno em delphi.
Adenilton Rodrigues
Delphi
17/09/2002 17:58:48

[url]http://lib.seven.com.br/ampliar.asp?codcat=1&codartigo=500[/url]


Responder

Gostei + 0

21/04/2004

Nerdex

Obrigado Adenilton... é bem isto que precisava... começarei agora os testes. O site lib.seven é ótimo... pois prioriza divulgar a essência nos contextos de programação, proporcionando um alto nível de qualidade nas informações e conhecimentos, e são altamentes dirigidos para a comunidade de TI. Parabéns pela matéria.

Ogradeço muito a dica...

Ricardo
Santa Maria - RS
pcunit@terra.com.br


Responder

Gostei + 0

21/04/2004

Nerdex

Ade... olha... eu fiquei um pouco enrrolado com aquele código, pois ele é meio bruxo de entender... Me dá uma orientação... se eu der este comando aí... embaixo por exemplo: e o arquivo ja estiver comprimido, será retornado um erro, certo... como eu faço p/ ´pegar´ a msg de erro disto? Acoplei a string no parâmeto DosApp da procedure mas ñ adiantou...

//UPX - compressão
WinExec(´Command.com /c upx --best C:\Dados\Arp.exe´, 0);

Depois eu desejaria fazer um para o GFix e o GBack do IB, para disponibilizar p/ o usuário um interfaceamento gráfico para uma possível manutenção de corrupção de dados, caso fosse necessário... que acha?

Mande-me um exemplo por e-mail?
pcunit@terra.com.br


Responder

Gostei + 0

22/04/2004

Adilsond

A função criada pelo Adenilton executa o comando passado a ele espera o fim do mesmo e retorna o seu resultado ao Memo passado como parametro. Então voce deve executar o comando assim:

CaptureConsoleOutput(´C:\Diretorio\upx.exe --best C:\Diretorio\Arquivo.exe´, Memo1);


Responder

Gostei + 0

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

Aceitar