Chamar uma procedure e retornar para a linha seguinte
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?
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
Curtidas 0
Respostas
Marco Salles
11/10/2009
Não seria so colocar o [b:45bc31b354]exit[/b:45bc31b354] ?????
GOSTEI 0
Cps.art
11/10/2009
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?
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?
GOSTEI 0
Afarias
11/10/2009
|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+
|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+
GOSTEI 0
Vitor Rubio
11/10/2009
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.
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.
GOSTEI 0
Cps.art
11/10/2009
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.
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.
GOSTEI 0
Afarias
11/10/2009
|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+
|é 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+
GOSTEI 0
Cps.art
11/10/2009
Problema resolvido.
Obrigado
Obrigado
GOSTEI 0