2007/03/14

VC2005 & Windows2000 上で _findfirst 実行エラー その2

前回の続きです。
今回もプログラムをある程度知ってる人じゃないと、意味不明かもしれません( ´д`)
 
では、まず問題のソースを見てみましょう。
#include <stdio.h>
#include <io.h>
 
int    main( int argc, char* argv[] )
{
  _finddata_t fd={0};
  const  char* fdkey = "C:\\Program Files\\Java\\j2re1.4.2_13\\bin\\*.*";
 
  intptr_t handle = _findfirst( fdkey, &fd );
  if( handle!=-1 ){
         do{
         }while( _findnext(handle, &fd)!=-1 );
       _findclose(handle);
   }
 
   return 0;
}
 
ここでは、ローカルドライブの C:\\Program Files\\Java\\j2re1.4.2_13\\bin\\ というフォルダの中身(※1)
すべての拡張子対象に検索しています。
 
※1 
なぜ、そんなフォルダを検索するかはあまり考えないで下さい。
 
はて?? 一見、なんの問題も無いように見えますね。
 
 
そうです、このサンプルソースには何の問題もありません!
 
ではここでお待ちかね?の、あるファイルまでを検索した時に出たエラー内容です。
 
 
 
うーん、なぜに日付関連のエラーが??( ゜Д゜)
 
デバッガで追っても意味わかんね
 
ってか XP 上ではなんで同じエラーが起きないんだ?
 
 
実はこの問題、どういう条件下で発生するかの原因が把握できたので次回に発生させる方法を紹介しようと思います。
これは VC6.0 でライブラリを作ってた人かつ Windows2000 環境の人は遭遇する確率が比較的高いかもしれません。
 
VC2005 から初めてプログラムを作る人は、きっとそうぐうすることは無いでしょうね(推測)
 

0 件のコメント:

コメントを投稿