Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _
(ByVal Destination As Integer, ByVal Source As Integer, ByVal Length As Integer)
Dim shmem As String
Dim i As Integer
Dim textA As String
textA = TextBox1.Text
For i = 1 To 100
CopyMemory(textA, shmem, Len(shmem))
上記ページの「値渡しによる変数の変更」というところに書いてありますが、「ポインタを渡す」というのは引数の参照渡しを実現するための、トリックみたいなものです。C 言語の様に、引数の渡し方として、値渡ししか出来ない言語でも、ポインタ値を渡すと参照渡しみたいなことが出来る、ということになります。
逆に C 側でポインタを期待する引数を VB 側からセットするには、その引数が参照渡しだとして宣言しておけば、VB 側が引数にポインタに該当する値をセットして、関数を呼び出すことになります。
...と書いている最中に、ぴったりのページを見つけました。
http://www.geocities.co.jp/SiliconValley-Bay/9960/vb/pointer.htm...
一応、VarPtr でポインタを求めることが出来ます。で、私が書いた参照渡しとして関数を宣言する場合と、VarPtr を使うことを前提として関数を宣言する場合の、両方が書かれています。
上記ページの「値渡しによる変数の変更」というところに書いてありますが、「ポインタを渡す」というのは引数の参照渡しを実現するための、トリックみたいなものです。C 言語の様に、引数の渡し方として、値渡ししか出来ない言語でも、ポインタ値を渡すと参照渡しみたいなことが出来る、ということになります。
逆に C 側でポインタを期待する引数を VB 側からセットするには、その引数が参照渡しだとして宣言しておけば、VB 側が引数にポインタに該当する値をセットして、関数を呼び出すことになります。
...と書いている最中に、ぴったりのページを見つけました。
http://www.geocities.co.jp/SiliconValley-Bay/9960/vb/pointer.htm...
一応、VarPtr でポインタを求めることが出来ます。で、私が書いた参照渡しとして関数を宣言する場合と、VarPtr を使うことを前提として関数を宣言する場合の、両方が書かれています。
String型のポインタはどのように表現するのでしょうか?単に Dim x as stringでxを利用するとstingをintegerに変換できないと実行時にエラーとなります。