duvida sobre do while no clipper 5.3

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

elias
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 01 Nov 2007 20:29
Localização: são paulo

duvida sobre do while no clipper 5.3

Mensagem por elias »

Quando faço um do while após dar o EXIT o programa aborta... porque esta acontendo isso??

GBoxdois(270,350,610,460,"Deseja Incluir Premio ? ",;
"verda12b.fnt",15,5,1,,0,12)
aItemMenu:= {"NÆo","Sim"} // {"Sim","NÆo"}
aItemIcon:= {"pbok.bmp","pbcanc.bmp"} // {"pbok.bmp","pbcanc.bmp"}
aItemMess:= {" "," "}
OP17:= GMenuHo(26,45,0, ,aItemMenu,aItemMess, ,aItemIcon, ,12)


IF OP17 = 1

TEMPRE='N'
REST SCREEN FROM T45
EXIT // >>>>> AQUI ABORTA O EXECUTAVEL

ELSEIF OP17 = 2

TEMPRE='S'
REST SCREEN FROM T45
...
...
...
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Elias!
Você já tentou colocar Return no lugar do exit?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

O que o EXIT faz é forçar a saída antecipada de um DO WHILE ou FOR/NEXT. Se depois do ENDDO ou NEXT não houver mais nada, óbvio que o comando volta pro SO.

O RETURN termina a execução da rotina que está sendo executada e volta o comando pra rotina que a chamou. Se não há essa rotina anterior, o comando volta pro SO.
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

Pessoal...

O comando EXIT tem a função de sair de DO WHILE ou FOR NEXT e o codigo que parceiro colocou é um IF ESLSEIF ENDIF(???)

Importante não confundir as ações:
EXIT ou LOOP -> DO WHILE/ENDDO
EXIT -> FOR/NEXT
RETURN -> IF/ENDIF

Aparentemente o programa dele está abortando prq o EXIT não se enconta dentro de uma das opções citadas acima... Creio que o correto no caso seria um RETURN
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

LOOP para FOR/NEXT também.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

Maligno escreveu:LOOP para FOR/NEXT também.
Obrigado pelo apoio ...
Se vc não fez nenhuma outra resalva, devo concluir que estou certo no post anterior...
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Aparentemente o programa dele está abortando prq o EXIT não se enconta dentro de uma das opções citadas acima...
Augusto, não é isso. Se vc colocar um EXIT fora de um DO WHILE ou FOR/NEXT, vc não consegue nem compilar. Dá Erro C2011. Como o Elias disse que o "programa aborta", então ele foi compilado e linkado.
Creio que o correto no caso seria um RETURN
O RETURN faz abandonar a rotina atual (ou o programa). E o que o Elias quer é o contrário!... :-)
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

Tenho minhas dúvidas quanto a sua afirmativa, acredito que passaria sim na linkedição. Vc testou ?? Tem conhecimento de causa ?? hehe
Mas o fato é que ele não está usando um DO WHILE e sim um IF logo o EXIT não procede e com certeza o ERRO está aí...
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Sim, testei. Não passa nem na compilação, muito menos na linkedição.

Se existe um EXIT e o programa está rodando, é porque esse EXIT está DENTRO de um DO WHILE ou FOR/NEXT.

O Elias está mostrando só um IF/ENDIF (onde está abortando), mas este pedaço deve estar dentro de outra estrutura (eu acredito que um DO WHILE).
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

Bem... o problema é que a gente está aqui discutindo e tentando achar uma solução pro cara e ele nem se manifesta...

Nesse caso... "TE LARGUEI" !!!
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Augusto escreveu:Se vc não fez nenhuma outra resalva, devo concluir que estou certo no post anterior...
Nem vi o resto. Hoje estou funcionando só a meia carga. Ou menos. :)

Essa questão do EXIT é como o Eolo falou. Não tinha me ligado, mas realmente dá erro de compilação.

Agora, o código do Elias está meio esquisito. Mas vamos pela lógica: EXIT é um comando simples. É impossível um programa normal abortar por causa dele. Portanto, se o programa realmente aborta nele, só uma coisa vai resolver o sinistro: compilar em outra máquina. A não ser que ele tenha nos passado dados errados. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
elias
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 01 Nov 2007 20:29
Localização: são paulo

EXIT NO DO WHILE

Mensagem por elias »

Pessoal...
existe um do while.... e o exit é exatamente para sair deste do while.. como sempre fiz no clipper.. como estou usando o clipper 5.3.. o executavel... compilado e linkeditado.. aborta... será que as rotinas do do while devem ser feitas em um prg a parte??? .. existem dois do while dentro de um mesmo prg.. será isso!!!!!

elias
elias
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 01 Nov 2007 20:29
Localização: são paulo

Mensagem por elias »

PESSOAL.. PRIMEIRAMENTE AGRADEÇO MUITO A ATENÇÃO DE TODOS... TENTEI TODAS AS ALTERNATIVAS CITADAS... E AINDA ASSIM ABORTA... VAMOS LÁ...
EXITE UM PRG MENU.. QUE CHAMA UM PRG PREMIO... NESTE PRG PREMIO EXISTE UMA PERGUNTA SE QUERO COLOCAR PREMIO.. ENTÃO COLOQUEI UM DO WHILE .. SE QUISER PREMIO.. ENTRA-SE COM OS DADOS DO PREMIO E LOGO EM SEGUIDA É FEITO UM IF.. SE ESTIVER CORRETO OS DADOS.. EXIT PARA SAIR DO DO WHILE... E QUANDO DIGO QUE OS DADOS ESTÃO OK.. ELE ABORTA O EXECUTAVEL EXATAMENTE NESTE EXIT.. ANDEI PESQUISANDO O CLIPPER 5.3 E PARECE-ME QUE OS DO WHILE TEM QUE SER FEITOS EM UM PRG A PARTE.. PROCEDE ISSO?? (DESCULPE-ME NÃO TER RESPONDIDO A TODOS ANTES.. É QUE EU NÃO ESTAVA EM CASA) ABRAÇOS A TODOS
elias
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 01 Nov 2007 20:29
Localização: são paulo

ERRO NO DO WHILE

Mensagem por elias »

PRIMEIRAMENTE AGRADEÇO MUITO A ATENÇÃO DE TODOS... TENTEI TODAS AS ALTERNATIVAS CITADAS... E AINDA ASSIM ABORTA... VAMOS LÁ...
EXITE UM PRG MENU.. QUE CHAMA UM PRG PREMIO... NESTE PRG PREMIO EXISTE UMA PERGUNTA SE QUERO COLOCAR PREMIO.. ENTÃO COLOQUEI UM DO WHILE .. SE QUISER PREMIO.. ENTRA-SE COM OS DADOS DO PREMIO E LOGO EM SEGUIDA É FEITO UM IF.. SE ESTIVER CORRETO OS DADOS.. EXIT PARA SAIR DO DO WHILE... E QUANDO DIGO QUE OS DADOS ESTÃO OK.. ELE ABORTA O EXECUTAVEL EXATAMENTE NESTE EXIT.. ANDEI PESQUISANDO O CLIPPER 5.3 E PARECE-ME QUE OS DO WHILE TEM QUE SER FEITOS EM UM PRG A PARTE.. PROCEDE ISSO?? (DESCULPE-ME NÃO TER RESPONDIDO A TODOS ANTES.. É QUE EU NÃO ESTAVA EM CASA) ABRAÇOS
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

elias escreveu:.. ANDEI PESQUISANDO O CLIPPER 5.3 E PARECE-ME QUE OS DO WHILE TEM QUE SER FEITOS EM UM PRG A PARTE.. PROCEDE ISSO??
Parceiro... essa afirmativa não procede. Todos os meus sistemas são em 5.3/Blinker6 e praticamente todos começam com um "DO WHILE .T." e dentro deles tem um montão de outros DO WHILE, IFs, FOR/NEXT etc, inclusive chamando "procedures" e retornando...
Pelo que vc está colocando, acredito que seja somente um erro de algorítimo... Que tal vc disponibilizar o código todo para que possamos analisar melhor e te ajudar ??
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Responder