Página 1 de 1

Pegar o return value de um programa

Enviado: 27 Fev 2015 13:41
por bencz
Gostaria de saber, como posso pegar o return value de um programa que estou executando apartir do meu programa em clipper...
Atualmente estou usando o WaitRun para executar o meu programa, mas o return dele é o handle do arquivo, e não o return value do programa que estou executando...

Pegar o return value de um programa

Enviado: 27 Fev 2015 16:18
por billy1943
Qualquer função ou procedure do Clipper pode retornar um valor de qualquer natureza (caracter, numérico, lógico, etc), basta apenas usar uma estrutura semelhante a esta:

1. programa ou rotina principal:

codigo_reg := busca_codigo(arquivo)
if codigo_reg == space(4)
(tratamento de insucesso.....
loop
else
tratamento de sucesso


endif

Explicação: se a rotina satisfazer sua finalidade retornará o valor de um campo que tem 4 caracteres que é um código, e, em caso contrário, retornará um campo com 4 espaços, para a sua rotina dar o seguimento.

PROCEDURE busca_codigo(arq)
select arq
.....

.....

seek

if eof()
return (space(4))
else
....
...
return (codigo_arq)

P.S. Ao menos foi isso que entendi de "return value", se esse programa for em Clipper também, obvio.

Pegar o return value de um programa

Enviado: 27 Fev 2015 17:01
por alxsts
Olá!

Se os valores retornados pelo programa forem conhecidos, você poderá executá-lo de dentro de um arquivo .Bat e testar o retorno com IF ERRORLEVEL.

Pegar o return value de um programa

Enviado: 27 Fev 2015 17:52
por Jairo Maia
Olá Pessoal,

Salvo se estou enganado, como estamos no fórum de Clipper, o Clipper não tem esse recurso que é gerenciar o Return Value. Em Clipper, o que você pode fazer é tratar o Return Code:

Código: Selecionar todos

ErrorLevel([<nReturnCode>])
No sistema que vai verificar o retorno, o colega Alexandre (AlxSts) Já deu a dica.

Mas se eu estiver enganado, embora não use mais o Clipper sempre é bom aprender mais uma...

Pegar o return value de um programa

Enviado: 27 Fev 2015 22:17
por JoséQuintas
Tudo indica que é isso mesmo: é um programa executando outro
E tudo indica que é alguma informação.
Dependendo do caso, poderia até usar um arquivo temporário, ou até mesmo um dbf.

Pegar o return value de um programa

Enviado: 28 Fev 2015 09:30
por sambomb
Grava um txt com o retorno que é bem mais fácil

Pegar o return value de um programa

Enviado: 03 Mar 2015 00:40
por rochinha
Amiguinhos,

Outra dica é enviar o conteúdo para uma variavel de ambiente do DOS e capturar por GETENV(). To certo.

Pegar o return value de um programa

Enviado: 10 Mar 2015 12:17
por Clash
Colega Jairo, vc comenta não estar mais utilizando o Clipper.

Eu já havia entrado neste conceito com o amigo Rochinha, mas eu acabei adiando.

Para qual plataforma vc migrou?

Vejo muitos comentários aqui no fórum, Harbour / xHarbour, estou completamente perdido, para qual migrar, o que é um ou outro.

Abs.

Pegar o return value de um programa

Enviado: 10 Mar 2015 15:14
por sambomb
Clash escreveu:Colega Jairo, vc comenta não estar mais utilizando o Clipper.

Eu já havia entrado neste conceito com o amigo Rochinha, mas eu acabei adiando.

Para qual plataforma vc migrou?

Vejo muitos comentários aqui no fórum, Harbour / xHarbour, estou completamente perdido, para qual migrar, o que é um ou outro.

Abs.
Várias pessoas estão recomendando o Harbour no lugar do xHarbour, para biblioteca visual recomendo o Fivewin.

Pegar o return value de um programa

Enviado: 10 Mar 2015 21:37
por JoséQuintas
Aliás... faltou o principal.
Foi dito no início que é pelo Clipper pegar o retorno de outro programa.
Se este outro programa for Windows, só alterando este outro programa.

Se este outro programa também for em Clipper, uma solução interessante seria juntar os dois num único EXE.

Então está dependendo mais deste outro programa do que do próprio Clipper.
Só depois de saber dele, é que dá pra pensar em alguma solução.
Como é que este outro programa retorna alguma coisa?

Pegar o return value de um programa

Enviado: 11 Mar 2015 08:42
por Clash
Obrigado pela dica SamBomb.

Alguma outra opinião por favor?!

abs.