Delphi似乎忽略了我的一些代码行?

我有一个正在使用的VCL Delphi应用程序,但是Delphi似乎拒绝执行我的一些代码行,而DrawLine是一个私有函数...

if not(FirstCoords) then
        begin
          firstcoords := true;
          xCo1 := xCoPre + LeftOffset;
          yCo1 := yCoPre + TopOffset;
        end
      else
        begin
          xCo2 := xCoPre + LeftOffset;
          yCo2 := yCoPre + TopOffset;
          DrawLine(xCo1,xCo2,yCo1,yCo2);
          bbtFieldScale.Click;
        end;

当我逐步调试时,它将执行If,然后继续将“ firstcoords”设置为true,但是然后直接跳到If的末尾,甚至不碰其他两行...如果我添加一行如下面的代码,那么它似乎执行了代码...

if not(FirstCoords) then
        begin
          firstcoords := true;
          xCo1 := xCoPre + LeftOffset;
          yCo1 := yCoPre + TopOffset;
          showmessage(inttostr(xCo1+yCo1));
        end
      else
        begin
          xCo2 := xCoPre + LeftOffset;
          yCo2 := yCoPre + TopOffset;
          DrawLine(xCo1,yCo2);
          bbtFieldScale.Click;
        end;

请帮助,我将非常感激:)

我已禁用优化,但它似乎仍然拒绝...

z4704958123 回答:Delphi似乎忽略了我的一些代码行?

当所讨论的操作被优化时,您所描述的会发生,因为分配给变量的变量未在代码中的其他任何地方使用,并且编译器认为消除这些操作没有明显的副作用

一旦您添加了ShowMessage(),相关的变量就会变得相关,因此无法再消除它们的分配。

本文链接:https://www.f2er.com/2540432.html

大家都在问