VBでDLL関数にユーザ定義型配列を渡す方法!!
■ このスレッドは過去ログ倉庫に格納されています
0001ゆい
NGNGしまうと エラー(不正な処理)がでてくるんです。
ユーザ定義型配列はメモリ上で連続していないのが原因のように思うんですが、
どうしたらよいか分かりません。
どなたかよろしくお願いします。
0002デフォルトの名無しさん
NGNG0003ゆい
NGNG普通の配列をDLLプロシージャに渡すサンプルを
見せていただけると応用しますので教えてください。
よろしくお願いします。
0004デフォルトの名無しさん
NGNGまぁそういう要求のしかたもあるけどさ、
一般に通用するたぁ限らないから教えちゃる。
まず自分のほうから、会社秘密的な問題のないように書き直した
「そのトラブルを起こす(簡単な)例」を作って示すもんだ。
まぁこのケースはVBできる人なら例なくても答えられる
ような問題だろうからそれはそれだが、今後は…。
0005ゆい
NGNG上司に相談したらこういう事はしてはいけないと
教えてもらいました。
明日はお休みですのでいえで一日考えて、
それでもわからなければ明後日は会社の先輩も
出社していますので、その方に聞いてみます。
よる遅くにすいませんでした。
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008ゆい
NGNGすいませんでした
0009デフォルトの名無しさん
NGNG0010ゆい
NGNG0011デフォルトの名無しさん
NGNGそれ、すいませんじゃ済まないよ。
初心者なら構文よりも先に良く出てくる言葉の意味を勉強すべき。
VB以前の問題と言われても仕方ないよ。。。
0012デフォルトの名無しさん
NGNGネタだろ。熱くなるなよ。
0013デフォルトの名無しさん
NGNG00147
NGNG次は無い。
00154
NGNGしちゃいけないって何を?
もしかして俺が書いたようなことを?
だとしたらその会社終わってる。
だとしたらの場合についてコメントしとくけど、
ちょうど俺が言いたいこと(笑)を代弁してくれてる頁があったんで
参照しとけ。
http://www.amy.hi-ho.ne.jp/~lepton/program/p1/prog109.html
ここで紹介されてるような馬鹿は死すべし。
#どういう馬鹿かというと、「自分とこの秘密そのもの」と
#「秘密とは関係無い一般的話題」を切り分ける能力が無いという馬鹿。
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGユーザ定義型配列はメモリ上で連続していない<-本当?
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGVBからCで作られたDLLを呼ぶときの話なのかな。
http://www5.ocn.ne.jp/~kansroom/vbtips/waza14.htm
には、「VBでは、構造体の変数を引数にする場合は、必ずByref渡しになります。」
って書いてあるので、特に指定しなくて良いと思われる。
例えば、
Public Type WNDCLASSEX
cbSize As Long
style As Long
lpfnWndProc As Long
cbClsExtra As Long
cbWndExtra As Long
hInstance As Long
hIcon As Long
hCursor As Long
hbrBackground As Long
lpszMenuName As String
lpszClassName As String
hIconSm As Long
End Type
Public Declare Function RegisterClassEx Lib "user32" Alias "RegisterClassExA" (pcWndClassEx As WNDCLASSEX) As Integer
って感じでよかったはず。
自作したCのDLLの場合には、VB側で構造体が32bit境界でパディングされて、
うまくいかなくなることはありうると思う。
そういうときには、byteの配列で宣言しておいて、
気合で代入するしかないかなあ。
14がAddressOfを指摘してるけど、関数のポインタは関係ないと思う。
002120
NGNG0022デフォルトの名無しさん
NGNG型を事前に特定できない場合は
Public Declare Function MapWindowPoints Lib "user32" Alias "MapWindowPoints" (ByVal hwndFrom As Long, ByVal hwndTo As Long, lppt As Any, ByVal cPoints As Long) As Long
のようにAs Anyで宣言すると型チェックしなくなるが、どう?
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGダニエル・アップルマン著「Win32 API パズルブック」翔泳社刊
を買え。すべて書いてある。
0025デフォルトの名無しさん
NGNGソース見せられん、例も見せられんじゃ
こちらも何も出来ん
ていうか虫よすぎ
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG良い本である
■ このスレッドは過去ログ倉庫に格納されています