• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストボックスのファイルパスでfp=open)

ファイルパスの指定方法についてのエラー

このQ&Aのポイント
  • C++ Builder2009でプログラムを行っている際に、テキストボックスのファイルパスを指定してファイル出力を行おうとした際にエラーが発生しました。
  • エラーの内容は、UnicodeString型の変数をconst char *型に変換できないというものでした。
  • ファイルパスをテキストボックスから渡す方法について教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

fopenを使うならAnsiStringに変換してからc_str()を使います。 FILE* fp = fopen(AnsiString(Edit1->Text).c_str(), "wb"); AnsiStringに変換できない文字列が含まれている場合、上の方法では処理に失敗するかもしれません。 その場合は_wfopenを使います。 FILE* fp = _wfopen(Edit1->Text.c_str(), L"wb"); 文字列を保存するならTFile.WriteAllText・TFile.WriteAllLines・TStreamWriter、バイト列を保存するならTFile.WriteAllBytesやTStreamWriterなどを使った方が簡単です。 C言語の関数ではなく、C++やC++Builderの関数やクラスを利用することをお勧めします。

diy_sunny
質問者

お礼

回答頂きありがとうございます。現在 FILE* fp = _wfopen(Edit2->Text.c_str(), L"wb"); fwrite(&crc,1,1,fp); fwrite(&test_bin,(151 * 4000),1,fp); fclose(fp); このようにbyte test_binというデータをファイル出力しているのですが、”TFile.WriteAllBytes”とか、”TStreamWriter”などでそのまま置き換えることは可能でしょうか?

その他の回答 (3)

回答No.4

No.3の「この回答へのお礼」欄の質問に対して回答します。 変数crcやtest_binについての情報が不足しているのではっきりしたことは言えませんが、もし保存するために変数crcやtest_binにデータを格納しているのであれば、変数crcやtest_binにデータを格納する前にTFile.WriteAllBytesやTStreamWriterなどで保存できるかもしれません。 「そのまま置き換える」のではなく、より簡単で簡潔に記述できる可能性があります。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

そのエラーが出てからここで質問するまでに, どう考えて何を調べたんですか? エラーが出るたびに質問していては効率があまりにも悪いと思うんだけど....

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

マニュアルで、TextboxのTextメンバーの型が何なのか調べてください。 あなたは、その型のことも、その型の内容をconst char*として取り出す方法も知っているはずです。 過去の質問の中にあるのですから。

関連するQ&A