Não sair do sistema
Moderador: Moderadores
-
joaosolution
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 07 Ago 2013 11:19
- Localização: Contagem/MG
Não sair do sistema
Srs.
Bom dia
Alterei minha função errorsys para não sair do sistema e retornar ao Menu principal do sistema.
Mas após isso, meus SAY´s não aparecem e os GET´s aparecem todos na mesma linha.
Grato pela ajuda
Att
João Bosco
Bom dia
Alterei minha função errorsys para não sair do sistema e retornar ao Menu principal do sistema.
Mas após isso, meus SAY´s não aparecem e os GET´s aparecem todos na mesma linha.
Grato pela ajuda
Att
João Bosco
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Não sair do sistema
Olá João,
Seja bem vindo ao Fórum.
João, creio que a única forma de podermos ajudá-lo, seria se você anexasse seu ERRORSYS.PRG alterado, e explicasse melhor em que situação você deseja que o sistema não aborte.
Está me parecendo que você está enviando um retorno antes mesmo que a rotina de erro possa tratar o erro.
Para anexar um arquivo no fórum veja este link: Como anexar arquivo nas mensagens
Seja bem vindo ao Fórum.
João, creio que a única forma de podermos ajudá-lo, seria se você anexasse seu ERRORSYS.PRG alterado, e explicasse melhor em que situação você deseja que o sistema não aborte.
Está me parecendo que você está enviando um retorno antes mesmo que a rotina de erro possa tratar o erro.
Para anexar um arquivo no fórum veja este link: Como anexar arquivo nas mensagens
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
joaosolution
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 07 Ago 2013 11:19
- Localização: Contagem/MG
Não sair do sistema
Jairo
Obrigado pelo retorno!
Acredito que o problema não está na errosys, mas está em anexo.
Pois a sequencia está correta, abre a janela do erro e ao invés de executar um Quit eu executo um Break para voltar no Menu do sistema.
Só que após este retorno os SAYs e GETs não posicionam de forma correta.
Acredito que tenha que setar alguma coisa para os GETS posicionarem de forma correta novamente.
Att
João Bosco
Obrigado pelo retorno!
Acredito que o problema não está na errosys, mas está em anexo.
Pois a sequencia está correta, abre a janela do erro e ao invés de executar um Quit eu executo um Break para voltar no Menu do sistema.
Só que após este retorno os SAYs e GETs não posicionam de forma correta.
Acredito que tenha que setar alguma coisa para os GETS posicionarem de forma correta novamente.
Att
João Bosco
- Anexos
-
errsysw.prg- (14.75 KiB) Baixado 69 vezes
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Não sair do sistema
Olá João Bosco,
Veja que quem está chamando o comando Break é função DoBreak(), que é chamada dentro do BEGIN SEQUENCE / END SEQUENCE:Da forma que você está fazendo, faz que o Break chamado, apenas quebra esse envelope, ou seja, ele segue após a linha END SEQUENCE
Existem formas de tratar erros pelo xHarbour, o fórum tem alguns exemplos usando o RECOVER, mas acho que você poderia ver se o exemplo abaixo ajuda você a entender o comando Break:
Veja que quem está chamando o comando Break é função DoBreak(), que é chamada dentro do BEGIN SEQUENCE / END SEQUENCE:
Código: Selecionar todos
BEGIN SEQUENCE
oOldError = ErrorBlock( { || DoBreak() } )
MemoWrit( "Error.log", cErrorLog )
END SEQUENCEExistem formas de tratar erros pelo xHarbour, o fórum tem alguns exemplos usando o RECOVER, mas acho que você poderia ver se o exemplo abaixo ajuda você a entender o comando Break:
Código: Selecionar todos
Function Main()
Inicio()
Return Nil
Function Inicio()
Alert( "Inicio" )
If LastKey() = 27 // K_ESC
Quit
EndIf
Final()
Return Nil
Function Final()
Alert( "Final" )
If LastKey() = 27 // K_ESC
Quit
EndIf
Break( Inicio() ) // volta para função Inicio()Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
joaosolution
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 07 Ago 2013 11:19
- Localização: Contagem/MG
Não sair do sistema
Jair
Obrigado pela resposta! Mas o Break está funcionando perfeitamente.
O sistema dá o erro e volta certinho para o Menu que eu quero.
Até aí blz!
Só que após este retorno, nas telas os SAYs somem e os GETS ficam desposicionadas(todos na mesma linha)(ou na linha 23)
É como se o sistema perdesse alguma referência, pois os Menus e Browses funcionam perfeitamente.
Att
João Bosco
Obrigado pela resposta! Mas o Break está funcionando perfeitamente.
O sistema dá o erro e volta certinho para o Menu que eu quero.
Até aí blz!
Só que após este retorno, nas telas os SAYs somem e os GETS ficam desposicionadas(todos na mesma linha)(ou na linha 23)
É como se o sistema perdesse alguma referência, pois os Menus e Browses funcionam perfeitamente.
Att
João Bosco
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Não sair do sistema
João, olhei sua função e me parece que o problema deve ser outro, embora ainda não entendo como o Break está funcionando.
Vou fazer uma pergunta que acho que com certeza a resposta será sim, mas vamos lá: Você declarou a variavel GetSys := {} na sua função MenuPrincipal() como Local?
Vou fazer uma pergunta que acho que com certeza a resposta será sim, mas vamos lá: Você declarou a variavel GetSys := {} na sua função MenuPrincipal() como Local?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
joaosolution
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 07 Ago 2013 11:19
- Localização: Contagem/MG
Não sair do sistema
Jairo
Sim normalmente declaro getlist:={} no início de todas a funções.
Att
João Bosco
Sim normalmente declaro getlist:={} no início de todas a funções.
Att
João Bosco
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Não sair do sistema
Ok.
Mas eu ainda acho que você poderia mudar este trecho do seu código:
Por este e testar:
Mas eu ainda acho que você poderia mudar este trecho do seu código:
Código: Selecionar todos
BEGIN SEQUENCE
oOldError = ErrorBlock( { || DoBreak() } )
MemoWrit( "Error.log", cErrorLog )
END SEQUENCECódigo: Selecionar todos
MemoWrit( "Error.log", cErrorLog )
Break( MenuPrincipal() )Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)