解決済み

DLL<->VB間での受け渡し(文字列・ポインタ)

  • すぐに回答を!
  • 質問No.299611
  • 閲覧数1188
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 72% (8/11)

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)

===================================================
長々と書いてしまいましたが、
何か、助言をいただければ幸いです。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1

ベストアンサー率 40% (230/562)

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

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

この質問により、何が知りたいかなどを明記してください。
お礼コメント
you-mi

お礼率 72% (8/11)

haporunさん
ありがとうございました。
原因は、VBの内容をよく理解していないために、
ご苦労をおかけしました。
今回の件は、文字列をそのまま引き渡していたため
見当違いの方向で進んでおりました。
他のQ&Aを参考にして Byte に変換しないと
いけなかったようです。(ポインタはその後)
仕様に惑わされてしまっておりました。
投稿日時 - 2002-06-26 13:23:45
OKWAVE 20th Be MORE ありがとうをカタチに
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ