Delphi和pointermath(文档中可能出现的错误)

时间:2009-01-20 11:13:25

标签: delphi directive

我正在浏览Delphi 2009语言指南。发现一些奇怪的事情。在指令列表(不是编译器指令)中,我找到了 pointermath

RAD-Studio
  Reference
    Delphi Reference
      Delphi Language Guide
        Fundamental Syntactic Elements
          Fundamental Syntactic Elements
            [Directives]

我知道这是一个编译器指令{$ POINTERMATH ON | OFF}但我不知道如何使用这个人。帮助中没有其他信息,所以我尝试了一些但没有成功。

procedure Name; pointermath; // gave an error

所以有几种可能性:

  • 尚未实施。
  • 这是帮助中的错误。
  • 我还没有找到合适的地方使用它。

我认为这是一个错误,(还有更多 seled 必须密封)。

有人对此指令有所了解吗?

4 个答案:

答案 0 :(得分:2)

Pointermath让你做这样的事情:

{$POINTERMATH ON}
procedure Test;
var
  temp: PWord;
begin
  temp := anAddress;
  temp := temp + 16;
  // temp now points to anAddress+$20 (2*16)
end;

没有指针,你得到: [DCC错误] unit.pas(135):E2015运算符不适用于此操作数类型

实质上,这意味着您不再需要对Integer的指针进行类型转换,以便将它们增加一个数值。

答案 1 :(得分:2)

除非Barry Kelly证明我们错了(他是对此的权威),否则我会投票支持文档错误:它适用于'编译器指令'一章。

答案 2 :(得分:1)

Codegear已经确认这是一个错误。

答案 3 :(得分:0)

我认为这意味着它允许你像指针数学一样做C。在Delphi 2009之前,你只能对类型指针进行有限的指针数学运算。