VC++でCSVを最後に(COMMIT;時に)削除したいんですが
どのような構文で削除できますか?
if (t_Flag)
m_Glue.Commit();
else
m_Glue.RollBack();
return t_Flag;
教えてください。よろしくお願いします。
開発環境はwindows2000 vc++6.0です。
unlink(D:\\WORK\\IMPORT\\HATUBAN.csv);
でやってみたんですがコンパイルエラーは出なくても削除もされていません。
何か間違った使い方なんでしょうか?
unlink の戻り値は正常だったんですか?
きっとオープンしっぱなしなので削除できなかったんでしょう
>unlink の戻り値は正常だったんですか?
戻り値は出していませんでした。
>きっとオープンしっぱなしなので削除できなかったんでしょう
ファイルをCLOSEしなければいけないということですか・・・
クローズは単純に
close(D:\\WORK\\IMPORT\\HATUBAN.csv);
で良いでしょうか?
一度、ファイル操作周りの関数の使い方をキチンを勉強された方が良いと思います。
close(D:\\WORK\\IMPORT\\HATUBAN.csv);
と書かれた時点であなたが関数の説明をきちんと読んでいないのがわかってしまいます。
あと、うまくいかないときに関数の戻り値をチェックするのは基本なので
そこまでは自力でやってください。
エラーの意味がわかれば、対処方法が見えてくるはずです。
見えてこなければ、プログラム以前にOSの仕組みから勉強しないと
いけないかもしれないです。
島さんのは想像ですから、まずは原因を調べましょう
ファイルをオープンしっぱなしの可能性が高いように思えますが
先入観(思いこみ)はデバッグをより困難な作業へ導きますから気を付けて
ここから先はヒロさんにしか解決できませんよ
> close(D:\\WORK\\IMPORT\\HATUBAN.csv);
それは無理ですね
fopenとかopen使ってます?(その場合はfcloseかclose参照)
僕は下記のライブラリを知らないのですが、こちらのライブラリで
csvのアクセスとかしてませんか?
それだと、その終了処理をそのライブラリのやり方に沿った方法でやらないといけません
m_Glue.Commit();
m_Glue.RollBack();
まずは原因究明です
>クローズは単純に
>close(D:\\WORK\\IMPORT\\HATUBAN.csv);
>で良いでしょうか?
それは私共には判りません。あなたがどのようにオープンしたか判っていないからです
ただ、普通の C/C++ では close(ファイル名) という事は出来ませんが、あなたが
何か特別なライブラリーなどをお使いで、その環境では可能かもしれません
>>unlink の戻り値は正常だったんですか?
>戻り値は出していませんでした。
でしたら戻り値を調べてみましょう。
エラーなどがあればその様に通知するのが普通ですので。
remove()の場合でも同様に戻り値を調べてみましょう。
>>きっとオープンしっぱなしなので削除できなかったんでしょう
>ファイルをCLOSEしなければいけないということですか・・・
開いたファイルが閉じてもいないのに削除されるのはおかしいと思いませんか?
fopen()で開いて、さてfread()等でデータを読もうとしたらそのファイルが消えていた。
なんてコトになっては困るでしょう?
>クローズは単純に
>close(D:\\WORK\\IMPORT\\HATUBAN.csv);
>で良いでしょうか?
どのようにファイルをオープンしたのか知っているのは貴方だけです。
掲示されたほんの数行から判断するのは無理です。
さらに、掲示されたコードがなにをしているのですか?
と聞かれていますよね?マルチポスト先で。
MSDN(2001/01)で引けるのは
CDatabase::Rollback()かCDaoWorkspace::Rollback()くらいです。
環境も不明ですのでコレ以上調べる手段もないような…
http://www.net24.ne.jp/~kenji/bbs/wforum.cgi?mode=allread&no=383&page=0
皆さん色々とありがとうございます。
ファイル操作周りをもうチョット勉強してから出直します。
それでも分らない場合質問すると思いますがよろしくお願いします。