VoidPtr引数にString型を直接指定した場合
Posted: 2006年3月02日(木) 19:50
コード: 全て選択
#prompt
Sub test(p As VoidPtr)
SetByte(p,&H30)
End Sub
Dim Buf As String
Buf="123"
test(Buf)
Print Buf
いろいろ試してみたところ、VoidPtr型の変数にString型を代入しようとするとエラーになりますが、VoidPtr型の引数にString型を指定してもエラーになりません。
さらに、このとき関数側では渡された引数の値がおかしくなっていますが、ちゃんと "123" という文字列へのポインタを指していて、アクセス違反も起こりません。
これが仕様だとしても使う側が混乱するので(*Byteを使え、と言われるかもしれませんが、WriteFileやReadFileなどAPIに関しても同様のことがいえるようで、VoidPtr型に関してStrPtr関数は省略できるのかできないのかがはっきりしません)、このような例も正常に動くようにするか、あるいはエラーではじくようにしていただけないでしょうか?
Ver 4.21.00で以上の動作を確認。