質問

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 sealed する必要があります)。

このディレクティブについて何か知っていますか?

役に立ちましたか?

解決

Barry Kelly が間違っていることを証明しない限り(彼はその権威です)、ドキュメントに投票しますバグ:「コンパイラディレクティブ」の章のためのものでした。

他のヒント

Pointermathを使用すると、次のようなことができます。

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

pointermathを使用しない場合: [DCCエラー] unit.pas(135):E2015演算子はこのオペランドタイプには適用できません

本質的に、これは数値でインクリメントするために整数へのポインタを型キャストする必要がもはやないことを意味します。

Codegearはバグであることを確認しました。

それが意味するのは、ポインター数学のようにCを実行できるということです。 Delphi 2009までは、型付きポインタに対して限られたポインタ計算しか行えませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top