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

タイトル Re^7: APIの宣言方法
投稿日: 2004/08/18(Wed) 20:01
投稿者よねKEN
参照先http://www5b.biglobe.ne.jp/~yone-ken/
> > 引数に渡したデータが破壊されてしまうようです。1回目のWritePrivateProfileString関数の
> > 呼び出しで変数IniFileNameの中身が破壊され、2回目に指定するパスは異なったものになり
ます。
> > #過去に別所で同様の問題があがっていたので実験したことがあります。
>
> フォローありがとうございます。
> テストして見たら上記現象が確認できました。
> 私も理解不足なのですが、今回の事は、通常のAPI関数でも同様の現象はおきるのでしょうか?

以下、私の個人的な予想で、確証はまったくないです。

他のAPI関数でも同様の現象は起きると予想してます。
例えば、GetPrivateProfileString関数の第四引数lpReturnedStringは結果の文字列を
受け取る必要があり、そのためにはStringBuilderで受けないといけませんが、
VBではString型で受けられるようになっています。
.NET FrameworkのString型の仕様からこれはあり得ない動作ですので、
VBが過去のAPI呼び出しとの互換性のためにString型で受けても大丈夫なように
何か細工をしていると考えられます。

で、おそらく関数に渡した文字列を再び引き取るような動作になっていて、
このときのUNICODE←→ANSIの変換あたりで、文字切れが発生しているのかな?
と想像しています。ま、あくまで想像ですけど。

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

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