Fórum Delphi ñ Detecta Repeat e nem while #258779
17/11/2004
0
Luisandro
Curtir tópico
+ 0Posts
17/11/2004
Massuda
Se isso resolver, isso significa que o código que você queria executar passo-a-passo foi removido pela otimização do compilador. Por algum motivo o compilador decidiu que o código em questão não era necessário (tipo atribuir um valor a uma variável que nunca é utilizada).
Gostei + 0
17/11/2004
Massuda
Melhor ainda... antes disso, verifique se as opções de debug em Project/Options/Compiler/Debugging estão selecionadas.
Gostei + 0
17/11/2004
Luisandro
Gostei + 0
17/11/2004
Luisandro
Gostei + 0
17/11/2004
Massuda
Gostei + 0
17/11/2004
Luisandro
while fim=false do {Este while o delphi detecta
begin {Este Begin não detecta}
conta:=conta+1;
achei:=RichEdit1.Text[conta]+RichEdit1.Text[conta+1]+RichEdit1.Text[conta+2]+RichEdit1.Text[conta+3]+RichEdit1.Text[conta+4]+RichEdit1.Text[conta+5]+RichEdit1.Text[conta+6]+RichEdit1.Text[conta+7]+RichEdit1.Text[conta+8]+RichEdit1.Text[conta+9];
conta:=conta+10;
if achei=´Processual´ then
repeat {Esse repeat o delphi não pega mas o until de le sim}
achei:=RichEdit1.Text[conta]+RichEdit1.Text[conta+1]+RichEdit1.Text[conta+2]+RichEdit1.Text[conta+3]+RichEdit1.Text[conta+4]+RichEdit1.Text[conta+5]+RichEdit1.Text[conta+6]+RichEdit1.Text[conta+7]+RichEdit1.Text[conta+8]+RichEdit1.Text[conta+9];
Processo:=Processo+RichEdit1.Text[conta];
conta:=conta+1;
until achei=´Relator(a)´;
if achei=´Relator(a)´ then
repeat {Esse repeat o delphi não pega mas o until de le sim}
achei:=RichEdit1.Text[conta]+RichEdit1.Text[conta+1]+RichEdit1.Text[conta+2]+RichEdit1.Text[conta+3]+RichEdit1.Text[conta+4]+RichEdit1.Text[conta+5]+RichEdit1.Text[conta+6]+RichEdit1.Text[conta+7]+RichEdit1.Text[conta+8]+RichEdit1.Text[conta+9];
Relator:=Relator+RichEdit1.Text[conta];
conta:=conta+1;
fim:=true;
until achei=´Órgão´;Gostei + 0
17/11/2004
Massuda
while fim=false do {Este while o delphi detecta}
begin {Este Begin não detecta}
{restante omitido}
Não sei se esta é uma explicação correta, mas aquele begin depois do while não é detectado porque ele, na prática, está embutido na mesma linha do while.
A propósito, eu consigo executar passo a passo o restante do código.
Gostei + 0
17/11/2004
Luisandro
Gostei + 0
17/11/2004
Luisandro
na instrução
repeat . . . until qualquer coisa=outra coisa;
Só Until é detectado no código o repeat não é detectado, o programa executa normalmente mas ao passar pelo until da erro na execução [/code]
Gostei + 0
17/11/2004
Aerreira
2° - seu comentário na primeira linha ´{Este while o delphi...´ não está fechado com }
3° - não tem end; para o begin do while
De resto, sua rotina está um pouco confusa pois soma um na variável conta, depois pega 10 linhas, soma em conta, depois fica num loop somando 1 em conta e procurando por uma palavra, depois fica em outro loop somando 1 em conta, procurando por outra palavra, depois retorna e continua somando 1 em conta... Essa sua rotina está correta? Tem fim? E se não achar a palavra ´Relator(a)´ vai ficar em loop prá sempre...
Gostei + 0
17/11/2004
Massuda
Seu código entra em loop infinito no último repeat porque você copia 10 caracteres para a string achei e testa se é igual a uma string com 5 caracteres.
Mesmo que você corrija isso (fácil :arrow: basta, no último repeat, copiar em achei apenas 5 caracteres ao invés de 10) seria recomendável revisar seu código.
Gostei + 0
17/11/2004
Sandra
[b:ad8da68d88]While...do[/b:ad8da68d88]: o teste é realizado no início desta instrução. Caso a expressão ´while´ (enquanto) seja verdadeira, os comandos a seguir serão executados. Consequentemente, caso seja falsa, não entrará no laço. Portanto, os comandos internos podem [b:ad8da68d88]ou não[/b:ad8da68d88] ser executados.
[b:ad8da68d88]Repeat...until[/b:ad8da68d88]: os comandos que estão dentro deste laço serão executados, independente da condição após o ´until´ ser verdadeira ou falsa. Após executar essas linhas, será feita a verificação. Caso seja verdadeira, será feita a repetição, caso contrário, não. Resumindo, estes comandos serão executados pelo menos uma vez.
Espero que ajude.
Gostei + 0
18/11/2004
Luisandro
o engraçado é que antes executava bem não fiz nenhuma modificação e derrepente parou de executar a instrução repeat na linha onde estava escrito.
Não sei mais o que fazer, vou começar o projeto do zero pra ver se resolve esse problema.
Gostei + 0
18/11/2004
Massuda
ou seja
if achei=´Relator(a)´ then
repeat {Esse repeat o delphi não pega mas o until de le sim}
achei:=RichEdit1.Text[conta]+RichEdit1.Text[conta+1]+RichEdit1.Text[conta+2]+RichEdit1.Text[conta+3]+RichEdit1.Text[conta+4];
Relator:=Relator+RichEdit1.Text[conta];
conta:=conta+1;
fim:=true;
until achei=´Órgão´;
senão o ´achei´ vai conter uma string com 10 caracteres o que nunca vai ser igual a ´Órgão´, que tem 5 caracteres.
Gostei + 0
18/11/2004
Luisandro
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)