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も見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
Cで作成したDLL関数をVBから呼び 引数渡し方法
Visual Basic(VBA)
-
構造体配列を引数とするDLL作成し、VBで呼ぶには?
Visual Basic(VBA)
-
ポインタについて
Visual Basic(VBA)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
C言語のポインタに直接アドレス...
-
参照型で受け取った引数をポイ...
-
構造体の削除について
-
デバイスハンドルとは?
-
ExcelVBAでのkernel32(64bit)
-
c言語のエラーについて
-
LPSTR型の初期化について
-
コンストラクタやデストラクタ...
-
C言語 ポインタと配列の違い...
-
fopne で失敗する原因
-
スコープ外でのアドレスの参照...
-
TCHAR文字列内の検索について
-
NULLポインタは0と書かなければ...
-
C++ vectorのbeginについて
-
C言語でのconstを返す関数
-
関数ポインタの高速化のメリット
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
fopne で失敗する原因
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
参照型で受け取った引数をポイ...
-
ハンドル、アドレス、ポインタ...
-
ハンドルはポインタか
-
C言語でのconstを返す関数
-
デバイスハンドルとは?
-
Cで作成したDLL関数をVBから呼...
-
popenした子プロセスのプロセス...
-
c言語で任意のファイルから読み...
-
[excel vba] マウスポインタの...
-
パスからファイル名を抽出
-
プーさんのマウスポインタを教...
-
基本アルゴリズムの『返す』の...
おすすめ情報