Fórum como ativar laço com while dentro de outro while sem parar o while principal #413776
06/03/2012
0
preciso de uma ajuda para executar o comando while com uma condição dentr4o do meu laço while principal, sem que o pricipal pare de ser executado.
segu parte do codigo interno não tenho idéia de como ficaria este codigo dentro meu laço principal se puderem me ajudar agradeço.
Wilson Leizico
Curtir tópico
+ 0Posts
06/03/2012
Joel Rodrigues
A estrutura é simples, um while dentro do outro. Para cada laço do while externo, serão executados laços no while interno desde que uma condição seja satisfeita.
Exemplo:
while X < 10 do
begin
Y := 0;
while Y < X do
begin
Y := Y + 0.1;
end;
X := X + 1;
end;
É um exemplo bem básico e até sem lógica a primeira vista, que faz o seguinte: um laço de 0 até 9 em X incrementando 1 e para cada valor de X, ele faz um laço de 0 até X - 0,1 incrementando Y de 0,1.
Realmente é bem bestinha, mas a ideia é mostrar a estrutura.
Boa sorte.
Gostei + 0
06/03/2012
Wilson Leizico
amigo meu laço é eterno ele fica rodando sem parar coletando dados que recebo na serial do PC.
na verdade quero executar uma condição que enquanto o campo normal for igual a N mostre pra mim num panel os dados registrados no bd. sem parar a minha leitura da serial.
no codigo abaixo enquanto normal = N ele executa e o laço principal para.
gostaria de saber se existe algo para o meu laço principal não parar.
trecho do meu codigo
var
mens:string;
i: integer ;
label mostra;
begin
if form1.evento.locate(normal,form1.edit19.text,[]) then
begin
mostra:
form1.evento.close;
form1.evento.sql.clear;
form1.evento.sql.add(select* from evento where normal = N );
form1.evento.open;
form1.evento.open;
form1.evento.First;
while not form1.evento.eof do
begin
mens:=inttostr(form1.eventoid.value)+ +form1.eventomensagem.value;
memo1.lines.add(mens);
sleep(1000);
form1.evento.Next;
end;
//form1.button3.click;
sleep(500);
goto mostra;
end
else
if form1.eventonormal.value = form1.edit19.text then
begin
form1.evento.close;
form1.evento.sql.clear;
form1.evento.sql.add(select* from evento where normal = S );
form1.evento.open;
end;
end;
Gostei + 0
06/03/2012
Joel Rodrigues
Para você ter um loop dito eterno, a condição de parada NUNCA pode ser satisfeita. Por exemplo, while 2 > 1 será executado enquanto 2 for maior que 1, ou seja, sempre.
Reveja seu código e tente reestruturar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)