tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: DLLへの文字列ポインタについて
投稿日: 2008/05/20(Tue) 11:18
投稿者neptune
こんにちは

ご覧になっていたんですね。^ ^;

> VB側から送った文字列の先頭アドレスを見ると、
> Unicodeではなく、ANSI文字列が入っていました。
これはそうなんですよね。

> Q1.自動的にUnicode→ANSIされるのでしょうか?
正直わかりません。

> Q2.DLLの変更は避けたいのです。
> となると、
>     Type STRCT
>             ldat_A As Long       ' データA
>             lptr As Long         ' ファイル名
>             ldat_B As Long       ' データB
>     End Type

>     Dim strct_d As STRCT
>     strct_d.ldat_A = 5           ' データA
>     StrPtr(StrConv("test.txt", vbFromUnicode)) ' ファイル名
>     strct_d.ldat_B = 6           ' データB
>     ret = DllFunc(strct_d)
> の様に処理するのはNGなのでしょうか?
DLL側の宣言をそのままにして↑ではできません。
これはUPしたサンプル検証の際確認しました。

で、本題ですが、先にも書きましたように、私は十分な説明が出来るほど
スキルがありません。(勉強してないんですが^ ^;)
以前に、VB用のDLLを作成した際、「BSTR およびC文字列の変換」
http://japan.internet.com/developer/20051004/27.html
を発見し、MSDNと↑を参考にしました。
ただ、そこには、
「複数言語のアプリケーション(Visual Basicアプリケーションからアクセスされる
C++ DLLなど)を書いている場合はBSTR/C文字列の変換が必要である。」
と書かれていますが、ccさんの書かれているように参照のみなら大丈夫なように気も
しますが、いかんせんVB用のDLL作成の際にはBSTRを使用するのが常道らしいです。
常道から外れるとろくな事ありませんからね。安全第一です。

申し訳ないですが、これ以上はお役に立てそうもありませんので、
識者の回答をお待ち下さい。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。