błąd W1037 FOR-Loop variable '%s' may be undefined after loop

0

W poniższym kodzie zródłowym wyskakuje mi błąd W1037 FOR-Loop variable 'Counter' may be undefined after loop. Jak sobie z nim poradzić


      for Counter:=0 to SizeRecord-1 do
        begin
          Data:=FileBuffer[Counter];
             iF EditorBuffer1.Active=EditorActive Then
             Begin
                Asm
                   mov al,Data
                   mov ebx,Adres
                   call Memory1Out8Black
                End;
             End
             Else
             Begin
                Asm
                   mov al,Data
                   mov ebx,Adres
                   call Memory2Out8Black
                End;
             End;
          Inc(Adres);
        end;
 
2

Nie błąd, tylko ostrzeżenie.

Cytując:

W1037: FOR-Loop variable '%s' may be undefined after loop (Delphi)

This warning is issued if the value of a for loop control variable is used after the loop.
You can only rely on the final value of a for loop control variable if the loop is left with a goto or exit statement.

The purpose of this restriction is to enable the compiler to generate efficient code for the for loop.

3

Problem nie występuje w podanym przez Ciebie kodzie, tylko w następnych linijkach.

Rozchodzi się o wykorzystywanie iteratora pętli poza pętlą, na zasadzie:

For I := 0 To 10 Do
Begin
 // tutaj jakiś kod
End;

Writeln(I); // wykorzystanie iteratora poza pętlą (bez ustawienia mu wartości!)

Nie jest to błąd, lecz nie powinno być takiej sytuacji w kodzie.

0

Żeby dopełnić, poza pętlą licznik może mieć zupełnie inną wartość, niż się spodziewasz.

0

żeby przelać, i kod może nie działać prawidłowo, a lokalizacja błędu może być ciężka :p

1 użytkowników online, w tym zalogowanych: 0, gości: 1