質問者
ATL:CString型等で保存した文字列をマネージコードモジュールから直接読取る方法について

質問
すべての返信
-
中さん、コメントありがとうございます。
※元の質問が複数のスレッドとして投稿されていたため、マージした上で重複部分を削除しました。ご了承ください。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
-
レスが遅くなりました。ご指導ありがとうございました。
説明が不足しており、誠に申し訳ございませんでした。
正確には、
ATL::CComBSTR.WriteToStream() 関数
を利用しています。CString::AllocSysString() 関数によってCComBSTR型に変換し、IStreamに対して出力しています。
ちなみにC++/CLIで行う場合は、
1)/clr オプション付でコンパイルする
2)混在アセンブリでデータ変換ツールを作成する
として、一度データ変換を行ってからサーバーアップをしたほうが良いでしょうか?
よろしくご指導のほどお願い申し上げます。
-
-
ご指導ありがとうございました。
その後、トライした結果を報告します。
UnicodeEncoding unicode = new UnicodeEncoding();
Int32 nLen = (Int32)rdr.ReadInt32();
Byte[] buf = new Byte[nLen];if (nLen > 2)
{
buf = rdr.ReadBytes(nLen-2);
string strName = unicode.GetString(buf);
}
if ( nLen - 2 >= 0 ) rdr.ReadBytes(2);でうまくいきました。なお、NULL文字列の場合、文字列長のデータ域に2もしくは0が入っているため、上記のような処理となっています。ATLのバージョンによってそのような処理が必要になるのでしょうか?