
こんにちは。プログラミング初心者でくだらない質問だったら申し訳ないのですが、調べてもどうしても解決できなかったので質問させて下さい。お手数をおかけしますが宜しくお願い致します。
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にてファイルパスを選択した場合のみ発生してしまいます。
これはどのような原因が考えられますでしょうか?
No.1ベストアンサー
- 回答日時:
SaveToFileで指定したファイルパスに問題がありそうですね。
1.指定したファイルがすでに存在し、それを別のプロセスが開いていて書き込みが出来ない状態である。
2.指定したディレクトリが存在しない。
3.指定したディレクトリに書き込みが許されていない。
OpenDialogを使用したときのみ例外が発生するということは、ひょっとして保存ファイルを相対パスで指定してませんか?
OpenDialogはカレントディレクトリを変更するので2.3.がおきる可能性があります。
大変的確なご回答ありがとうございます。
なるほど~OpenDialogはカレントディレクトリを変更するのですか・・・。
デスクトップにテスト用のjpegを置いてそれを読み、アプリの格納されているディレクトリ内のDataディレクトリ内にそのテキストファイルを保存しようと相対パスで指定しておりました。
OpenDialogを開いた際にカレントディレクトリがアプリ格納ディレクトリからデスクトップディレクトリに変わってしまっていたのですね。。。
大変的確にご回答頂きまして、とても助かりました。ありがとうございました。また宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Excel(エクセル) Excelで漢字人名が勝手に並び変わる(続) 4 2023/03/21 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
Excel2013 FSO.getAbsolutePath...
-
ExcelVBAでカレントディレクト...
-
パソコンの識別
-
ファイルやディレクトリの存在...
-
「UNCパスはサポートされません...
-
ファイルダイアログのカレント...
-
セルに入力されたパスでフォル...
-
fopenで別ディレクトリにファイ...
-
#include fileを絶対パスで指定...
-
絶対パスの絶対て英語で何でし...
-
C++BuilderにてEFCreateErrorが...
-
FTPでputすると空ファイルが出...
-
フルパスから最後のディレクト...
-
マイクラでPythonのプログラミ...
-
パス区切りに使用する文字について
-
webアプリケーションでの画像フ...
-
覚えのないファイルがあります。
-
GetPrivateProfileStringでini...
-
Ubuntu テキストファイルをどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
FTPでputすると空ファイルが出...
-
「UNCパスはサポートされません...
-
絶対パスの絶対て英語で何でし...
-
ExcelVBAでカレントディレクト...
-
fopenで別ディレクトリにファイ...
-
windows.hがincludeされない
-
ファイルやディレクトリの存在...
-
セルに入力されたパスでフォル...
-
ネットワーク上のコンピュータ...
-
C言語を用いたファイルの一括削...
-
ExcelVBA サーバーの(共有フォ...
-
GetPrivateProfileStringでini...
-
マイクラでPythonのプログラミ...
-
webアプリケーションでの画像フ...
-
Ubuntu テキストファイルをどこ...
-
ファイルダイアログのカレント...
-
新規作成ファイルパスが有効か...
-
FindFirstFileについて
おすすめ情報