- PR -

[C#]shift-jis形式の引数を渡したい

1
投稿者投稿内容
CAR
会議室デビュー日: 2002/07/26
投稿数: 7
投稿日時: 2004-09-29 08:18
こんにちは。最近C#を使い始めました。

C++で作成されたDLLの関数に対して、shift-jis形式の引数を渡したいのですが、どのようにしたらよいのかわかりません。
対象の関数は、もともとはCString型の引数を渡すように作られています。

すみませんが、ご教授のほどお願いします。


[ メッセージ編集済み 編集者: CAR 編集日時 2004-10-01 13:16 ]
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2004-09-29 11:09
> shift-jis形式の引数
というのは、エンコードがshift-jis形式の文字列データということでしょうか。
それと対象の関数がCStringを引数にとるということは、
アンマネージコード(ネイティブ)なDLLからエクスポートされている関数で
MFCのCStringオブジェクトを引数にとると言うことでしょうか?

もしMFCのCStringを引数にとる関数ならば、この関数の仕様を再考するべきです。

void foo(LPCTSTR lpText);
なら、C#から呼び出せると思いますが、
void foo(CString strText);
だと難しいと思います。
CAR
会議室デビュー日: 2002/07/26
投稿数: 7
投稿日時: 2004-10-01 11:52
chackさん。ありがとうございます!

>> shift-jis形式の引数
>というのは、エンコードがshift-jis形式の文字列データということでしょうか。

はい。テキストボックスに入力した文字列を、shift-jisエンコードで引数にしたいのです。テキストファイルへのshift-jis出力などはできているのですが、関数への渡し方が判りません。。。。

>それと対象の関数がCStringを引数にとるということは、
>アンマネージコード(ネイティブ)なDLLからエクスポートされている関数で

はい。そうです。

>MFCのCStringオブジェクトを引数にとると言うことでしょうか?

対象のDLLを作成した人間が既にいないため、詳細はわからないのですが、String型の変数で渡してみたところ正常ではないものの、動作する文字もあるため、shift-jis形式で渡すことさえできれば何とかなりそうなのですが。

やっぱり難しいのでしょうか。。。困りました。
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2004-10-01 13:46
動作する文字もあるとのことなので、

文字列に対する既定のマーシャリング
http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpcondefaultmarshalingforstrings.asp

MarshalAs 属性など調べてみてはいかがでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)