
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ランキング
-
アドレス値はどの型にキャスト...
-
c言語で任意のファイルから読み...
-
ペンタブレットのポインタの動...
-
CWnd::EnableWindow()の扱い方
-
スコープ外でのアドレスの参照...
-
C言語のポインタに直接アドレス...
-
ポインタのミスでOS壊れるの...
-
init関数の意味
-
C言語 配列の長さの上限
-
BCBで配列の要素数(0)の場合
-
「#undef」と「#define」の使い...
-
char*を初期化したいのですが
-
関数から配列を返すには?
-
C言語において、 配列要素をひ...
-
C++Builder 2009 テキスト...
-
C言語・要素除去
-
Redimした動的配列はEraseする...
-
【速いブラインドタッチ】手を...
-
DXライブラリでの2Dの描画...
-
配列を使わずに、変数名を動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
セグメントエラー
-
Run-Time Check Failure #3とい...
-
ExcelVBAでのkernel32(64bit)
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
参照型で受け取った引数をポイ...
-
トリプルポインタが必須!とな...
-
ハンドルはポインタか
-
LPSTR型の初期化について
-
ポインターの使用法や利点
-
ポインタについて
-
c言語で任意のファイルから読み...
-
基本アルゴリズムの『返す』の...
-
コンストラクタでnewを失敗した...
-
ハンドル、アドレス、ポインタ...
-
アプリを32bitから64bit移行
-
デバイスハンドルとは?
-
NULLとブランクの違い
おすすめ情報