• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:読込んだ文字列でDeleteFileWを使うには)

読込んだ文字列でDeleteFileWを使うには

このQ&Aのポイント
  • Visual Studio2005を用いて、Windows Mobile上で動作するWin32アプリケーションをコーディングしています。
  • 読み込んだ文字列をANSIからUnicodeに変換してファイルを削除する方法について困っています。
  • コード内でのファイルの読み込みや削除の処理に関して、意見を聞きたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, readString, 42, readString2, sizeof(readString)); マジックナンバーだったり、sizeof()だったりと…統一取れていませんね… MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, readString, -1, NULL, 0); で必要な文字数を取得して、メモリ確保後、改めて確保したバッファと文字数を指定して変換してみてはどうですか? >if( DeleteFileW(readString) == TRUE) >{ >MessageBoxW(NULL, readString2, L"delete_OK", 0); >}else{ >MessageBoxW(NULL, readString2, L"delete_NG", 0); >} NGで…… GetLastError()でエラーコードを調べる必要はないのでしょうか? ROMファイルを削除しようとしている。 そもそも変換が正しくない。 とか…まぁ、いろいろ考えられはしますが……。

ia06043
質問者

お礼

ご回答ありがとうございました。 読み込むファイルの中身のパスの記述を\\を\に変更し、 読み込んだあと、改行コードを取り除くことで、正常に動作しました。

ia06043
質問者

補足

回答ありがとうございます。 >マジックナンバーだったり、sizeof()だったりと…統一取れていませんね… すみません、色々いじったままで、チェック抜けてました。 >必要な文字数を取得して、メモリ確保後、改めて確保したバッファと文字数を指定して変換してみてはどうですか? 試してみましたが、うまくいきませんでした。 メモリサイズの問題ではないかと思います。 >GetLastError()でエラーコードを調べる必要はないのでしょうか? 参考にしたものに載っていなかったので、使っていませんでした。 思わぬエラーがあるかもしれないので、試してみます。 >ROMファイルを削除しようとしている。 削除しようとしているのは、自分で作成したファイルで、 WCAHR str[MAX_PATH] = ..... というようにPG内で宣言した変数を DeleteFileW関数に渡すと削除出来るので、ROMではないかと思います。 >そもそも変換が正しくない。 そう思いまして、OutputDebugString関数やMessageBoxW関数で表示してみたところ、 削除するファイルのパスとファイル名がちゃんと表示されます。 とりあえず、早くエラーコードを調べてみます。 迅速な対応していただいたのに、反応が遅くてすみませんでした。

関連するQ&A

専門家に質問してみよう