ファイルをディスクに保存するための[名前を付けて保存]ボタンがあるMFC C++アプリケーションを作成しています。私はファイルの上書きのために追加の検証を追加しようとしています(同じファイル名のファイルが存在する場合、古いファイルを上書きするかどうかを問い合わせる必要があります)。私は以下のコードでこれを試しましたが、実際には動作しません。 MessageBoxでNoをクリックすると、Save Asファイルダイアログが再び開くはずですが、2つのエラーが表示されます。最初はDebug assertion failed
、もう1つはEncountered an improper argument
です。これをもっとうまくやるべきでしょうか?これは、コードである:MFCファイルを保存ダイアログ
char strFilter[] = { "Text Files (*.txt)|*.txt|" };
CFileDialog FileDlg(FALSE, CString(".txt"), NULL, 0, CString(strFilter));
while(true)
{
if(FileDlg.DoModal() == IDOK) // this is the line which gives the errors
{
agendaName = FileDlg.GetFileName(); //filename
agendaPath = FileDlg.GetFolderPath(); //filepath (folders)
if(model->agendaExists(CSToString(agendaPath+TEXT("\\")+agendaName))) // there is another file called the same way
{
if(MessageBox(TEXT("A file with the specified name already exists. Overwrite?"), TEXT("File exists"), MB_YESNO) != 6) // user clicked NO (do not overwrite file)
{
continue;
}
}
model->sendToFile(CSToString(agendaPath+TEXT("\\")+agendaName)); // the file is unique so the agenda named agendaName found at path agendaPath is saved
return;
}
}
エラーがwhile
介してライン7上にのみ第二のループで発生することが言及されるべきです。
私は知っていますが、ファイル名とファイルパスの両方が必要です。上記は、うまくいきました。ありがとう! –