> Dim ab As String
> ab = Chr$(&H31)+ Chr$(0)+Chr$(&H32)+ Chr$(0)
>
> 上記と同じ事を、Byte配列で行いたいのですが、
>
> Dim ab[3] As Byte
> lstrcpy(ab As BytePtr,Chr$(&H31)+ Chr$(0)+Chr$(&H32)+ Chr$(0))
>
> としても、NULLが入りません。
> どうすれば良いのでしょう?
さてさて、どうしてlstrcpyを使用したときにうまくいかないと思いますか?
この問いの答えは簡単で、lstrcpy関数はコピーしようとする文字列にNULL文字が含まれている場合、その場でコピーを止めてしまうんですね。
これをどうやって回避するかといいますとコピーしようとする文字の長さを予め指定してコピーしてやればよいということになります。
とはいっても、lstrcpy関数には文字の長さを指定することが出来ませんのでメモリ関連の操作にしようするmemcpy関数を変わりに使ってやります。
コード: 全て選択
Dim ab[3] As Byte
Dim str As String
str=Chr$(&H31)+Chr$(0)+Chr$(&H32)+Chr$(0)
memcpy(ab As BytePtr,StrPtr(str),4)