Lo que ves en la lista de observaciones (
watch list) es normal y se debe a la optimización que hace el compilador al generar el código máquina resultante.
En teoría, desactivando la optimización deberías ver el valor que esperas.
Otra forma de conocer el valor de la variable contador, sin desactivar la optimización, es "provocar" que dicha variable tenga mayor uso dentro del ciclo. Por ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
m : mensaje_letrero;
i : integer;
begin
for i:=0 to 4 do begin
If I = I Then; m.mensaje[i]:=$20;
end;
end;
Cabe mencionar que, aún con la optimización que Delphi hace del código máquina, tu programa se ejecutará como lo esperas (internamente el programa usa otro "contador" para la asignación, en lugar de I).
Espero te resulte útil.
Hasta pronto.
Al González.