もしよろしければ、どなたかお教えくださればと思います。
フロッピーをライトプロテクトして、そのフロッピーにMemoの内容を保存しようとしたときの処理を考えています。その際、保存ファイル名はSaveDialogで取得します。
このとき、既に存在するファイルを選択して保存しようとすると、ちゃんと「ライトプロテクトされています」とのメッセージがでますが、フロッピーに存在していないファイル名で保存しようとするとそのようなメッセージは一切出ず、ダイアログが閉じた後に「ファイルを作成できません」と警告メッセージが出るだけになってしまいます。
ライトプロテクトされているかどうか確認して、プロテクトされている場合にはダイアログボックスが閉じる前に警告メッセージを出したいのですが、どのようにすればよろしいのでしょうか?
0バイトのテストファイル作成とかしてしまうとCD−Rへの応用が厳しそうですし、SaveDialogのオプションにもこの機能はついていなさそうです。
簡単な問題なのかも知れませんが、自分自身ではもう2週間ほど悩んでいます。お手数ですが、どうかよろしくお願いいたします。
TSaveDialogコンポーネントの、OnCanCloseイベントで判別します。
# 確認した環境: Delphi7Professional
早々としたレス、ありがとうございました。
ご指摘のあったイベントに以下の記述をしたところ、何とか望む結果が得られました。
try
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
except
ShowMessage(SysErrorMessage(GetLastError));
Canclose:=False;
end;
要は、ウインドウズ付属のメモ帳などと同じ反応(上書き、読み取り専用属性、ディスクの書き込み禁止等)をさせたかったのです。この中で、ディスクの書き込み禁止の検出のみがオプションでサポートされていなかったのでしばらくの間悩んでいたのですが、本当に助かりました。自分で練習用に作っているメモ帳に応用してみようと思います。
本当にどうもありがとうございました。
ツイート | ![]() |