C++ Builder2009でプログラムやってます。
テキストボックスEdit2-Textにファイルパスが入っているので、
fp = fopen( Edit2->Text , "wb" );
このようにしてファイル出力を行おうとしたら次のようなエラーが出てきました。
[BCC32 Error] Unit1.cpp(384): E2034 Cannot convert 'UnicodeString' to 'const char *'
[BCC32 Error] Unit1.cpp(384): E2342 Type mismatch in parameter '__path' (wanted 'const char *', got 'UnicodeString')
エラー内容だと”Edit2-Text”はUnicodeString型なので、fp = fopen にはconst char *っていう型にしないといけないという意味だと思うのですが、fopenでファイルパスをテキストボックスから渡すにはどのようにしたらよいか、ご教授よろしくお願い致します。
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の関数やクラスを利用することをお勧めします。
回答頂きありがとうございます。現在
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”などでそのまま置き換えることは可能でしょうか?
No.4
- 回答日時:
No.3の「この回答へのお礼」欄の質問に対して回答します。
変数crcやtest_binについての情報が不足しているのではっきりしたことは言えませんが、もし保存するために変数crcやtest_binにデータを格納しているのであれば、変数crcやtest_binにデータを格納する前にTFile.WriteAllBytesやTStreamWriterなどで保存できるかもしれません。
「そのまま置き換える」のではなく、より簡単で簡潔に記述できる可能性があります。
No.1
- 回答日時:
マニュアルで、TextboxのTextメンバーの型が何なのか調べてください。
あなたは、その型のことも、その型の内容をconst char*として取り出す方法も知っているはずです。
過去の質問の中にあるのですから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Excel(エクセル) このコードに追記事項の仕方を教えて下さい。 以下のコード内容に出てくる。セルH3が空白の場合、エラー 4 2023/08/03 00:22
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Lubuntuでフォントをインストー...
-
【python】pandasでExcel(...
-
FFFTPでサーバに新規フォルダが...
-
Microsoft Access エラー 3051
-
VBAでファイルパスが長すぎてコ...
-
SDカード(16GB)に保存した動画...
-
vba エクセルダウンロードファ...
-
【Excel VBA】PDFを作成して,...
-
Excelでdatファイルを作成??
-
1フォルダに保存できるファイル...
-
Windowsのメモ帳でジョークウイ...
-
複数のテキストファイルをexcel...
-
バッチファイルが作成できない
-
batファイル処理でのテキストフ...
-
バッチファイルで古いフォルダ...
-
ダウンロード不可PDFファイルは...
-
Excel-VBA 撮影日時の取得
-
Webサイト アプリのコンパイル他
-
複数テキストファイルをエクセ...
-
フォルダ作成用バッチファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでファイルパスが長すぎてコ...
-
Microsoft Access エラー 3051
-
Lubuntuでフォントをインストー...
-
【Excel VBA】PDFを作成して,...
-
Refreshで落ちる
-
ExcelVBAで、隠しフォルダにあ...
-
Excel VBA シートを指定して...
-
FFFTPでサーバに新規フォルダが...
-
VBAでFTPファイル転送がうまく...
-
フォルダ参照ではなくファイル...
-
エクセルVBA フォームを開く時...
-
グーグルドライブからコピーし...
-
OCXのライセンス
-
ファイルが別のPCで開けない
-
ASP上でFileSystemObjectのDele...
-
ASP.NETで、別サーバーへファイ...
-
VBSで指定したフォルダにファイ...
-
BASP21のアップロードについて
-
【python】pandasでExcel(...
-
vba エクセルダウンロードファ...
おすすめ情報