保存について


遊羅  2008-03-12 11:24:59  No: 67839  IP: 192.*.*.*

また、質問に来ました。
遊羅です。

VC++ 6.0使用です。
前回とプログラムは同じです。

ここからが質問です。
保存するテキスト名を書き、書込みボタンを押したときに、フォルダ内に同じ名前のテキストがあれば
「上書きしますか?」
とメッセージを表示し
「はい」・「いいえ」
のボタンを表示して、いいえなら何もせず元の画面に戻り、はいなら上書きをするというふうに変えたいのですが、なにを使ったら良いのかわかりません。
一応色々調べてみたのですが、恥ずかしながら調べるにしても「保存」や「上書き」以外の言葉が浮かびません・・・

以下、書込みボタンのソースです。

  FILE *stream;
  char file[MAX_PATH]={0};
  CString str;

  GetDlgItemText(IDC_EDIT2, file, MAX_PATH);
  CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT1);
  GetDlgItemText(IDC_EDIT1,str);

  if(strlen(file) == 0)
  {
    AfxMessageBox("ファイル名を入力してください。\n");
    return;
  }
  if( (stream = fopen( file, "wb" )) != NULL )
  {
    while(fputs(str, stream) != NULL)
    {
      strcat(file,str);
    }
  SetDlgItemText(IDC_EDIT1, str);
  fclose(stream);
  }
  else
  {
    AfxMessageBox( "fopen 関数でエラーが生じました。\n");
  }
}

ヒントでも良いので、どなたかご教授を宜しくお願いします。

編集 削除
通行人  2008-03-12 13:07:32  No: 67840  IP: 192.*.*.*

CFile::GetStatusとか

編集 削除
επιστημη  2008-03-12 14:05:52  No: 67841  IP: 192.*.*.*

いろんなやり方がありそう。
たとえば書き込みopenの前に読み込みopenし、
成功(!=NULL)したら"既存"であることがわかります。

編集 削除
シャノン  2008-03-12 15:01:32  No: 67842  IP: 192.*.*.*

> 前回とプログラムは同じです。

てゆーときは、前回のスレへのリンクを張っておくとよいかも。

で、俺なら確認メッセージを出すのは CFileDialog に任せちゃいますね。

編集 削除
PATIO  2008-03-25 11:33:34  No: 67843  IP: 192.*.*.*

> 前回とプログラムは同じです。

というか不特定多数が見る掲示板ではこれはちょっとと言う気がします。
前回を見ている人が見るとは限らないわけだし。
シャノンさんが書いているみたいにせめてリンクを張るくらいは
した方が良いと思います。
分量的に長くなりすぎないならコピペでもいいわけだし。

前回を見る気がない人は参加しなくて良いと言うならそれはそれですけどね。

私もCFileDialogに任せるに一票。

編集 削除
ひろ  2008-03-25 14:25:50  No: 67844  IP: 192.*.*.*

コードを見る限り、エディットボックスにファイル名が入っている
ようなので、要望としてはCFileDialogではないはず。

> if(strlen(file) == 0)
> {
>     AfxMessageBox("ファイル名を入力してください。\n");
>     return;
> }

CFileFind find;
if (find.FindFile(file) == TRUE)
{
    if (AfxMessageBox("上書きしますか", MB_ICONQUESTION | MB_YESNO) == IDNO)
    {
        return;
    }
}

>     :

編集 削除
シャノン  2008-03-26 12:24:59  No: 67845  IP: 192.*.*.*

> コードを見る限り、エディットボックスにファイル名が入っている
> ようなので、要望としてはCFileDialogではないはず。

エディットボックスにファイル名を入れるときに CFileDialog を使う、とゆーことで。
# どのみちこの手のチェックは気休めでしかありません。

編集 削除
ひろ  2008-03-26 15:55:14  No: 67846  IP: 192.*.*.*

> 保存するテキスト名を書き、書込みボタンを押したときに、
> フォルダ内に同じ名前のテキストがあれば

この質問ですよ?
書込みボタンを押したときにCFileDialog??

編集 削除
赤猿  2008-03-26 16:07:29  No: 67847  IP: 192.*.*.*

> > 保存するテキスト名を書き、書込みボタンを押したときに、
> > フォルダ内に同じ名前のテキストがあれば
>
> この質問ですよ?
> 書込みボタンを押したときにCFileDialog??
別に「キーボードで入力する」とは言っていないと思いますが。

詳細な仕様がわからない以上、
そこはたいして重要ではないと思います。

編集 削除
そだ  2008-03-26 18:11:02  No: 67848  IP: 192.*.*.*

ソースコード上はテキストボックス使ってファイル名取得してるけど
質問だけ見たらCFileDialogそのものですよねー

CFileDialogを知らず、メモ帳やらofficeやらと同じように
上書き確認の機能が欲しかっただけなんじゃないかしら。

2週間前の質問な上、
質問者本人不在につき本当は何がしたかったのかわかりませんが。

編集 削除