質問させていただきます。よろしくお願いします。

function TForm1.BDF(s,t:string):integer;
var
i:integer;
begin
result:=0;
for i:=0 to gd.mx_ed do
if(gd.ed[i].b=s)and(gd.ed[i].t=t)then
if(gd.ed[i].r<>a1)and
(gd.ed[i].r<>a2)then
result:=result+1;
end;

意図通りに動かなかったので
この関数中にブレイクポイントを置いて監視してみたところ
iもresultも
「最適化のため変数をこの位置から参照することはできません」
となり、変数として正しく機能してくれません。
何故でしょうか?