Fórum (...)W1037 FOR-Loop variable ´i´ may be undefined after loop #374949

15/09/2009

0

Boa tarde galera, tenho dois FOR (não é loop aninhado e sim separado) numa rotina que desenvolvi...

O meu segundo FOR deve começar de onde o primeiro FOR parou.

Conforme abaixo:

-Primeiro FOR
      while iIniMesclaPremio = 0 do
      begin
        for i := 0 to pCds.Fields.Count - 1 do
        begin
            if (verdadeiro) then
            begin
              iIniMesclaPremio := 1;
              Break;
            end;
        end;
      end;


-Segundo FOR

      for i := i to pCds.Fields.Count - 1 do
      begin
          if (verdadeiro) then
          begin
            iFinMesclaPremio := iFinMesclaPremio + 1;
          end;
      end;


Quando eu compilo o módulo está dando o seguinte warning:
´[Pascal Warning] us993gpl.pas(195): W1037 FOR-Loop variable ´i´ may be undefined after loop´
Provavelmente é pq no segundo FOR eu to recebendo ´i := i´, porem, como disse no início do post: PRECISO começar o segundo for onde parou o primeiro.

E NÃO posso deixar esse hint de warning devido a empresa que trabalho possuir inspetor de código e futuramente vou ser pego no teste da unit.

Então quem puder me ajudar a eliminar esse warning, já agradeço!
Obrigado!


Rafa.spimenta

Rafa.spimenta

Responder

Posts

15/09/2009

.lg.

não precisa falar que [color=blue:9fca4657fc]i[/color:9fca4657fc] é igual a [color=blue:9fca4657fc]i[/color:9fca4657fc].
Mude a variavel usada no segundo for que deve funcionar.
for i := j to pCds.Fields.Count - 1 do

Caso não funcionar posteae que ajudamos.


Responder

Gostei + 0

15/09/2009

Rafa.spimenta

eu tinha tentado isso, porem, o warning insistia, mas achei uma solução que foi a seguinte:


-Primeiro FOR

      iContador := 0; //acrescentei
      while iIniMesclaPremio = 0 do 
      begin 
        for i := 0 to pCds.Fields.Count - 1 do 
        begin 
            if (verdadeiro) then 
            begin 
              iIniMesclaPremio := 1; 
              Break; 
            end; 
         iContador := i; //acrescentei
        end; 
      end; 
 



-Segundo FOR


      for i := iContador to pCds.Fields.Count - 1 do 
      begin 
          if (verdadeiro) then 
          begin 
            iFinMesclaPremio := iFinMesclaPremio + 1; 
          end; 
      end; 
 


Não sei porque, mas quado coloquei o ´iContador´ recebendo ´i´ no primeiro for, o warning desapareceu.

Vai ficar a dúvido do pq desta forma não dar warning...

Vlw Amigo!


Responder

Gostei + 0

15/09/2009

.lg.

A warning é por reutilizar a variável do loop(for), sumiu o warning quando vc mudou a posição das variaveis no for como vc mesmo disse.
Não sei porque, mas quado coloquei o ´iContador´ recebendo ´i´ no primeiro for, o warning desapareceu.



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar