大人になっても苦手な食べ物、ありますか?

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)

===================================================
長々と書いてしまいましたが、
何か、助言をいただければ幸いです。

A 回答 (1件)

ポインタの何が困っているのか、この内容からでは理解しかねます・・・。



○ 文字列はByValでポインタが渡される
○ 配列は先頭の要素をByRefでポインタが渡される
○ それ以外の変数もByRefでポインタが渡される

この質問により、何が知りたいかなどを明記してください。
    • good
    • 0
この回答へのお礼

haporunさん
ありがとうございました。
原因は、VBの内容をよく理解していないために、
ご苦労をおかけしました。
今回の件は、文字列をそのまま引き渡していたため
見当違いの方向で進んでおりました。
他のQ&Aを参考にして Byte に変換しないと
いけなかったようです。(ポインタはその後)
仕様に惑わされてしまっておりました。

お礼日時:2002/06/26 13:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報