Delphiおよびpointermath(ドキュメントのバグの可能性)
質問
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までは、型付きポインタに対して限られたポインタ計算しか行えませんでした。
所属していません StackOverflow