为什么“ H2077分配给X的值从未使用过”为什么不与字符串变量一起出现?

时间:2019-04-02 16:19:08

标签: delphi compilation compiler-warnings delphi-xe7 delphi-2007

每次我分配变量而不使用它...

var
  X : integer;
begin
  X := 123;
end;

在编译时,有一条提示可以帮助我说:

  

[dcc32提示] Unit1.pas(30):H2077从未分配给“ X”的值

不幸的是,如果未使用的变量是string,则不会发生。

var
  X : string;
begin
  X := 'hello';
end;

我已经在 Delphi 2007 Delphi XE7 中重现了相同的行为,所以我认为这是预期的行为。

为什么没有为string变量引发H2077 hint

1 个答案:

答案 0 :(得分:2)

似乎托管类型在分配和未使用时不会引发提示。

除此之外,当启用优化时,也不会删除赋值,就像值类型一样。

为什么没有提出提示,现在可以进行猜测。没有正当理由不这样做。


另请参见No hint generated for assigned but unused "reference to procedure",以QP报告。