アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、ifjpeg.spiのDLLファイルで画像データを表示させるプログラムを作成中です。
このプログラムで、

if( IsSupported(OpenDialog->FileName.c_str(),theFile) != 0 )


このプログラムでビルドを行うと次のようなエラーが出ます。

[BCC32 エラー] Unit1.cpp(106): E2034 'wchar_t *' 型は 'char *' 型に変換できない
[BCC32 エラー] Unit1.cpp(106): E2340 1 番目のパラメータは char * 型として定義されているので wchar_t * 型は渡せない


”IsSupported”は

ProcIsSupported IsSupported =
(ProcIsSupported)GetProcAddress(hSPI, "IsSupported");

このように宣言していて、


typedef int __stdcall (*ProcIsSupported)(LPSTR,DWORD);


このようなプログラムなのですが、解決方法を教えて頂けませんでしょうか?

A 回答 (2件)

質問するには、もう少し情報があった方がいいでしょう。


既にある回答の情報から、C++ Builder のようですが、2009 or 2007 以降、ダイアログにある文字データの型が AnsiString から、UnicodeString に替わりました。
このため、c_str() をとっても、char * ではなく、wchar_t* が帰ってきます。

で、横着をするのなら、UnicodeString が AnsiString にキャスト可能であることを使って、

if( IsSupported(OpenDialog->FileName.c_str(),theFile) != 0 )

を、

if( IsSupported(static_cast<AnsiString>(OpenDialog->FileName).c_str(),theFile) != 0 )

と、一度 AnsiString にしてから、.c_str() をとると、char * が帰ってきます。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます m(_ _)m   ”wchar_t char 変換” この手の型に関する話とかホントに理解が乏しくて、どうにかしたいです・・・。

いつもすみませんです。

どうにか、解決できてDLLファイルを呼び出して画像表示できました!

お礼日時:2012/05/10 18:04

似たようなエラーで何度か質問をしているようですが……


# http://oshiete.goo.ne.jp/qa/7466514.html
# http://oshiete.goo.ne.jp/qa/7465903.html

何が問題なのか理解していますか?
回答で示された修正方法をコピペしただけで、何が問題になっているのか理解していない為にこのような質問を繰り返しているのではないかと思いますが……。
# Susieプラグイン使うなら、unicodeではなくmbcsにプロジェクト自体を設定した方がいいかと思いますけどね。
# C++ Builder 2009は使っていないので具体的な対策はちょっと不明ですが。

「wchar_t char 変換」で検索すると、相互変換する方法を説明しているページが見つかると思いますので、
OpenDialog->FileName.c_str()で渡すのではなく、char型での文字列に変換したものを渡せばよいでしょう。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます m(_ _)m   ”wchar_t char 変換” この手の型に関する話とかホントに理解が乏しくて、どうにかしたいです・・・。

いつもすみませんです・・・

お礼日時:2012/05/10 18:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!