
VBで開発を行っていますが、
DLL<->VBでのやり取りでポインタ?のの引渡しで困っております。
簡単に言うと、指定したキーで、内容(データ)を取出し、さらに
要素ごとにデータを取出すという仕組みです。
例ですが、DLLの仕様は
TR_MR(No,Id,Buff)
Noは検索No.
Idは取出す位置
buffはデータバッファ領域のポインタ
で、Idで指定された位置からデータをbuffに読み込む
(戻り値は、buffにセットされたデータのバイトサイズ)
TR_MR_IT(buff,Tagset,Dat)
buffは先ほど取り込んだデータバッファ領域のポインタ
Tagsetは項目識別子のポインタ
Datはデータ上の1項目の文字列
と言う具合です。
VBでの宣言は
===================================================
Private Type Tagset
tagno As String * 3
Subf As String * 1
seq As Integer
End Type
Private Declare Function TR_MR Lib "tr.dll" (ByVal no As Integer, ByVal Id As Integer, ByVal buff As String) As Integer
Private Declare Function TR_MR_IT Lib "tr.dll" (ByVal buff As String, ByRef tg As Tagset, ByVal dat As String) As Integer
Dim buf_size As Integer
Dim MR_buff As String
MR_buff = String(65562, vbNullChar)
buf_size = TR_MR(no, 1, MR_buff)
Dim tg As Tagset
Dim MR_size As Integer
Dim MR_IT_buff As String
tg.tagno = "001"
tg.Subf = "A"
tg.seq = 1
MR_IT_buff = String(12282, vbNullChar)
MR_size = TR_MR_IT(MR_buff, tg, MR_IT_buff)
===================================================
長々と書いてしまいましたが、
何か、助言をいただければ幸いです。
No.1ベストアンサー
- 回答日時:
ポインタの何が困っているのか、この内容からでは理解しかねます・・・。
○ 文字列はByValでポインタが渡される
○ 配列は先頭の要素をByRefでポインタが渡される
○ それ以外の変数もByRefでポインタが渡される
この質問により、何が知りたいかなどを明記してください。
haporunさん
ありがとうございました。
原因は、VBの内容をよく理解していないために、
ご苦労をおかけしました。
今回の件は、文字列をそのまま引き渡していたため
見当違いの方向で進んでおりました。
他のQ&Aを参考にして Byte に変換しないと
いけなかったようです。(ポインタはその後)
仕様に惑わされてしまっておりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
参照型で受け取った引数をポイ...
-
Visual C++2010 Express
-
init関数の意味
-
ポインタについて
-
Run-Time Check Failure #3とい...
-
ExcelVBAでのkernel32(64bit)
-
SystemC言語の文法(関数の引数...
-
error C2105 CとC++の違い関して
-
LPSTR型の初期化について
-
ポインタへの値の代入時の警告...
-
fopne で失敗する原因
-
C言語のポインタに直接アドレス...
-
C言語 関数の戻り値と自動変数
-
画像の処理について
-
別のDLLのダイアログを・・・
-
連結リスト 要素の入れ替え
-
C#で、C言語で作ったdllに文字...
-
▼C言語 ポインタ
-
C言語の勉強しています。すみま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
Run-Time Check Failure #3とい...
-
ExcelVBAでのkernel32(64bit)
-
参照型で受け取った引数をポイ...
-
init関数の意味
-
セグメントエラー
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
ハンドル、アドレス、ポインタ...
-
C言語でのconstを返す関数
-
C++で関数ポインタから関数名を...
-
パスからファイル名を抽出
-
ReadFileの読み込みエラーについて
-
#define NULL ((void *)0) の弊害
-
CImage GetBitsメソッドについて
-
ポインタ変数の疑問
-
Cで作成したDLL関数をVBから呼...
おすすめ情報