※ ChatGPTを利用し、要約された質問です(原文:C++BuilderにてEFCreateErrorが回避できません)
C++BuilderにてEFCreateErrorが回避できません
このQ&Aのポイント
C++Builderにてファイルの保存時にEFCreateErrorが発生してしまいます
OpenDialogを使用してファイルパスを選択した場合にのみエラーが発生します
手入力での保存は正常に行えるため、原因はOpenDialogの使用にある可能性があります
C++BuilderにてEFCreateErrorが回避できません
こんにちは。プログラミング初心者でくだらない質問だったら申し訳ないのですが、調べてもどうしても解決できなかったので質問させて下さい。お手数をおかけしますが宜しくお願い致します。
C++Builderにて単純なプログラムを作成しています。
内容はTEditコンポーネント,TButtonコンポーネント,TOpenDialogコンポーネントを設置し、TButtonのクリックイベントでOpenDialogのExcecuteメソッドを呼びます。
ExcecuteメソッドがtrueだったらOpenDialogのFileNameプロパティの値をTEditのTextにコピーし、そのText、つまりファイルのフルパスをExtractFileName関数でファイル名のみにした値をTStringList型にAddします。
そして最後に保存ボタンクリックでTStringListオブジェクトのSaveToFileメソッドで保存する、という内容なのですが、保存ボタンクリック時にEFCreateErrorが発生してしまいます。
常に発生するのであれば原因も絞れるのですが、「OpenDialogのExcecuteメソッドを呼び出した場合のみ」という条件で例外が発生してしまい、原因が分からず困っております。
つまり、手入力でTEditに入力した場合などは正しく保存できるのですが、OpenDialogにてファイルパスを選択した場合のみ発生してしまいます。
これはどのような原因が考えられますでしょうか?
お礼
大変的確なご回答ありがとうございます。 なるほど~OpenDialogはカレントディレクトリを変更するのですか・・・。 デスクトップにテスト用のjpegを置いてそれを読み、アプリの格納されているディレクトリ内のDataディレクトリ内にそのテキストファイルを保存しようと相対パスで指定しておりました。 OpenDialogを開いた際にカレントディレクトリがアプリ格納ディレクトリからデスクトップディレクトリに変わってしまっていたのですね。。。 大変的確にご回答頂きまして、とても助かりました。ありがとうございました。また宜しくお願いいたします。