[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/09/17(Fri) 02:29
投稿者名:苦無庁
Eメール:
URL :
タイトル:
ByRef とByVal
お世話になります。
あるリプレースの物件で、ソースはなくDLLだけ提供された仕事してます。
DLLはActiveXではなく、純粋?なDLLです(Declare宣言するやつ)
使い方は、以前のソースをみてわかるのですが
ByValで指定した有る値をもう一つのByrefで宣言した値に返すと言うものなのですが
どちらも値が変わって返ってきます。VB使いでありながらCも判る方。是非教えてください。

例:Public Declare Function hoge Lib "naze.dll" Alias "hage" (ByVal a As Long, ByRef b As String) As Long
において a をパラメータとして渡し、bの結果を利用する。
のに、aの値も変わっている。
問題は無いのですが・・・気になるもので

投稿時間:2004/09/17(Fri) 09:47
投稿者名:るしぇ
Eメール:
URL :
タイトル:
Re: ByRef とByVal
hhttp://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200408/04080132.txt
とか
hhttp://search.microsoft.com/search/results.aspx?view=ja-jp&st=b&na=82&qu=DLL+%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3+%E6%96%87%E5%AD%97%E5%88%97
とか

投稿時間:2004/09/19(Sun) 01:22
投稿者名:苦無庁
Eメール:
URL :
タイトル:
Re^2: ByRef とByVal
るしぇ様
有難う御座いました。
参考にします。

投稿時間:2004/09/19(Sun) 12:49
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re: ByRef とByVal
> 例:Public Declare Function hoge Lib "naze.dll" Alias "hage" (ByVal a As Long, ByRef b As String) As Long
> において a をパラメータとして渡し、bの結果を利用する。
> のに、aの値も変わっている。
> 問題は無いのですが・・・気になるもので

この関数の引数の定義(特にAs Long/As Stringの部分)は実際のソースコードとまったく同じですか?
そのDLLのその関数のC言語での定義がわからないとなんとも言えませんが、
この定義であれば、少なくともaに対して渡した変数の値自体が変わることはありえません。
また、bはStringなのにByRefになっているのでポインタのポインタを渡す仕様なのでしょうか?
という疑問が沸きます。