VoidPtr引数にString型を直接指定した場合

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: VoidPtr引数にString型を直接指定した場合

VoidPtr引数にString型を直接指定した場合

by hira » 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
このコードで、Bufの内容が "123" のままになってしまいます。
いろいろ試してみたところ、VoidPtr型の変数にString型を代入しようとするとエラーになりますが、VoidPtr型の引数にString型を指定してもエラーになりません。
さらに、このとき関数側では渡された引数の値がおかしくなっていますが、ちゃんと "123" という文字列へのポインタを指していて、アクセス違反も起こりません。
これが仕様だとしても使う側が混乱するので(*Byteを使え、と言われるかもしれませんが、WriteFileやReadFileなどAPIに関しても同様のことがいえるようで、VoidPtr型に関してStrPtr関数は省略できるのかできないのかがはっきりしません)、このような例も正常に動くようにするか、あるいはエラーではじくようにしていただけないでしょうか?

Ver 4.21.00で以上の動作を確認。

ページトップ