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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Cで作成したDLL関数をVBから呼び 引数渡し方法
Visual Basic(VBA)
-
VBでC言語のポインタみたいな使い方?
Visual Basic(VBA)
-
ポインタについて
Visual Basic(VBA)
-
-
4
VBA-DLLの引数受け渡しについて
C言語・C++・C#
-
5
VB.NETで、DLLを頂いたんですが・・
Visual Basic(VBA)
-
6
VBの「As String * 128」とは?
Visual Basic(VBA)
-
7
構造体配列を引数とするDLL作成し、VBで呼ぶには?
Visual Basic(VBA)
-
8
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
9
VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。
Visual Basic(VBA)
-
10
VBで動的なメモリの確保
Visual Basic(VBA)
-
11
VBから参照できないCのDLLを使用する方法
Visual Basic(VBA)
-
12
VB6でポインタ?
Visual Basic(VBA)
-
13
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
14
VB6のAttribute VB_Nameの意味について
Visual Basic(VBA)
-
15
VB.NETにて、構造体へデータをセットするにはどうすればよいですか?
Visual Basic(VBA)
-
16
VB2005 DataGridView上でクリックを無効にする方法はありますか?
Visual Basic(VBA)
-
17
FileOpen 関数で既にファイルが開かれている場合
Visual Basic(VBA)
-
18
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
19
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
20
C#でstringをポインタとして渡す
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++6.0 MFC ダイアログバーを...
-
C言語の関数と配列に関する質問
-
fopne で失敗する原因
-
C言語のポインタに直接アドレス...
-
基本アルゴリズムの『返す』の...
-
C言語: ポインタ
-
【なぜポインタを使うのか】
-
TCHAR文字列内の検索について
-
戻り値で構造体を返すことは可...
-
【VC++2005(CLR)】マルチスレッ...
-
メモリのアドレスからの値の取...
-
ポインタ変数の利用方法
-
VB.NET DLL【API関数(コールバ...
-
VBはCを混乱させる?
-
セグメントエラー
-
LPSTR型の初期化について
-
Windowプログラミング lParam...
-
関数の引数をvoid*でキャストする
-
CopyMemory()をmemcpy()に書き...
-
任意のアドレスの中身を参照し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報