GARANTIR DESCONTO

Fórum Chamar uma procedure e retornar para a linha seguinte #375872

11/10/2009

0

Já pesquisei e não achei nada que funcione.

No Clipper, chama-se uma outra procedure, e nessa outra procedure, quando é encontrada a linha [b:0b57fed046]RETURN[/b:0b57fed046] volta-se para a procedure que chamou, na próxima linha da chamada e continua executando essa primeira procedure.

Ex:

[b:0b57fed046]PROCEDURE 1[/b:0b57fed046]
linha 1.....
linha 2.....
linha 3 [b:0b57fed046]Do Procedure 2[/b:0b57fed046] (vai executar a Procedure 2)
linha 4 Foi para o Procedure 2, retornou aqui e continuará executando esta procedure
linha 5...

[b:0b57fed046]PROCEDURE 2[/b:0b57fed046]
linha 1....
linha 2....
linha 3 [b:0b57fed046]Return[/b:0b57fed046] (volta para a linha 4 da Procedure 1)

Qual seria a função equivalente no Delphi, se é que existe?


Cps.art

Cps.art

Responder

Posts

12/10/2009

Marco Salles

Não seria so colocar o [b:45bc31b354]exit[/b:45bc31b354] ?????


Responder

Gostei + 0

12/10/2009

Cps.art

Pois é Marcos, inicialmente achei que era o [b:12044cce68]Exit[/b:12044cce68], mas numa rotina que fiz, parece que esse comando não retorna para a linha desejada como exemplifiquei.

Se tivesse uma maneira de saber as linhas por onde a rotina passa, aí teríamos como saber, mas no Delphi tambem desconheço uma forma de fazer isso.

Uma idéia seria gravar um log de todas as linhas percorridas.

Tem alguma idéia?


Responder

Gostei + 0

12/10/2009

Afarias

|Pois é Marcos, inicialmente achei que era o Exit, mas numa rotina que fiz,
|parece que esse comando não retorna para a linha desejada como
|exemplifiquei.

Ao deixar o procedimento chamado (seja por chegar ao fim do procedimento ou forçando a saída usando Exit) o Delphi continua o código na 1a. linha logo após a chamada do procedimento.


|Se tivesse uma maneira de saber as linhas por onde a rotina passa, aí
|teríamos como saber, mas no Delphi tambem desconheço uma forma de
|fazer isso.

O Delphi tem um ótimo depurador. Coloque um breakpoint onde deseja acompanhar e use os comandos no menu run (step, trace, etc) para acompanhar a execução do código.


|Tem alguma idéia?

Sugiro q vc perca alguns minutos lendo um bom livro ou manual sobre programação/depuração em Delphi


T+


Responder

Gostei + 0

12/10/2009

Vitor Rubio

O Exit faz exatamente isso. Sai da procedure corrente e volta para a primeira linha de quem a executou.

Para acompanhar, clique na linha acima da chamada, ou na logo abaixo e clicando com o botão direito selecione add breakpoint. Ou então clique na regua da esquerda do editor de código e clique em uma linha. Aparecerá uma bolinha vermelha e a linha inteira ficará vermelha.

Rode o programa com o debugger, clicando no play verdinho. Quando chegar numa linha vermelha o programa vai parar. Você pode clicar em step into para pular detalhadamente para a proxima linha, ou step over para pular para a proxima, pulando automaticamente se a proxima entrar em uma outra procedure.

Como o Delphi tem muitas bibliotecas e units e faz bastante uso de todas elas, você perceberá que, se algumas dessas linhas forem na verdade chamadas a outras procedures ou functions, você vai acabar entrando passo a passo nas entranhas do delphi se estiver usando step into.... bom, uma hora você sai de lá.

Use ShowMessage ou adicione linhas de texto num memo. Isso pode te ajudar a visualizar a ordem de execução das coisas.


Responder

Gostei + 0

12/10/2009

Cps.art

Obrigado [b:0573045e62]Victor[/b:0573045e62], sua ajuda foi valiosa.
Fiz como disse e pude ver o comportamento da rotina.
Alterei algumas linhas e resolvi o problema.

Quero esclarecer que não sou programador profissional e que alguns sisteminhas que desenvolvo são para uso doméstico ou para algum amigo que precise, minha atividade profissional é outra, da qual dependo financeiramente.

Sempre pedi ajuda aqui neste forum e sempre encontrei alguem que se dispos a ajudar, pelo que sempre fiquei muito agradecido.

Sei tambem que os usuários deste forum não têm obrigação de tentar esclarecer todas as dúvidas aqui relatadas, e que os que se propõe a esclarece-las, o fazem expontaneamente com o intuito de ajudar.

Não tenho muito material sobre programação e depuração do Delphi, e me é oneroso adquiri-lo alem de que disponho de pouco tempo para me dedicar a essa atividade.

Seria o mesmo que fizesse um [b:0573045e62]curso de medicina[/b:0573045e62] para apenas aprender fazer um [b:0573045e62]curativo[/b:0573045e62].

Obrigado [b:0573045e62]afarias[/b:0573045e62] pela sugestão, mas quero que se sinta desobrigado de responder qualquer dúvida que eu venha, de futuro, colocar aqui.

Abraços a todos.


Responder

Gostei + 0

13/10/2009

Afarias

|Não tenho muito material sobre programação e depuração do Delphi, e me
|é oneroso adquiri-lo alem de que disponho de pouco tempo para me dedicar
|a essa atividade.
|Seria o mesmo que fizesse um curso de medicina para apenas aprender
|fazer um curativo.
|Obrigado afarias pela sugestão, mas quero que se sinta desobrigado de
|responder qualquer dúvida que eu venha, de futuro, colocar aqui.

Tudo isso pq sugeri uma boa leitura??

Até na NET encontram-se apostilas introdutórias de graça. Até pra fazer um curativo corretamente é bom ler algo sobre o assunto antes.


T+


Responder

Gostei + 0

13/10/2009

Cps.art

Problema resolvido.

Obrigado


Responder

Gostei + 0

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

Aceitar