Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

参照渡しのパラメータにnilを渡す

動的配列の参照とほとんど同じだけど、例えばWin32APIのReadProcessMemoryの引数であるlpNumberOfBytesReadは本来オプションであり、nilを渡しても問題のないはずが、Windows.pasでは参照渡しとして宣言されているために直接nilが指定できなかったりする。
でもこんな場合も、

ReadProcessMemory(..., PDWORD(nil)^);

としてやればnilが渡せる。余分なダミー変数を作らずに済んで精神衛生的によい感じ。今回はPDWORDでキャストしているけど、他の場合は本来渡すべき型のポインタ型でキャストすればOK。
もちろんnilを渡すことが許されてる関数でのみ使えるのであって、それ以外ではいわゆるぬるぽのようなエラーが起きる可能性がある。