none
代码不能兼容WIN7(比较郁闷的是,时好时不好)(求助) RRS feed

  • 问题

  • 此代码在XP下完全无错。只有WIN7部分功能不好用,(32位是有时管用,64位就不行了)请各位大牛给看看

    int adrncpy()
    {
     intptr_t hFile;
     struct _finddata_t c_file;
     int ret = 0;
     int max = 0;
     FILE *fp;
     if(_chdir("./data/sbin/"))
     {
      ret = 0;
      return ret;
     }
     else
     {
      hFile = _findfirst("adrn_*.bin",&c_file);
      int version = 0;
      sscanf_s(c_file.name,"adrn_%i.bin",&version);
      
      fopen_s(&fp,c_file.name,"rb");
      if( fp == NULL){ ret = 0; return ret;}
      int size = getfilesize(fp);
      sadrnbin[max] = (char*)malloc(size);
      memset(sadrnbin[max],0,size);
      maxadrn = (int*)malloc(sizeof(int));
      maxadrn[max] = size/0x50 + adrnbin_max;
      fread(sadrnbin[max],1,size,fp);
      char realname[64];
      sprintf_s(realname,64,"real_%d.bin",version);
      fopen_s(&srealbin[max],realname,"rb");
      max++;
      if( srealbin[max] == NULL )
      {
       MessageBox(0,L"请检查补丁的完整性4",L"StoneAge",MB_ICONERROR);
      ExitProcess(0);
      }
      fclose(fp);

      while(_findnext(hFile,&c_file) == 0)
      {
       fopen_s(&fp,c_file.name,"rb");
       if( fp == NULL){ ret = 0; return ret;}
       sscanf_s(c_file.name,"adrn_%i.bin",&version); 

       sadrnbin[max] = (char*)malloc(c_file.size);
       memset(sadrnbin[max],0,c_file.size);

       maxadrn = (int*)realloc(maxadrn,sizeof(int)*(max+1));
       maxadrn[max] = c_file.size/0x50 + maxadrn[max-1];

       fread(sadrnbin[max],1,c_file.size,fp);
       sprintf_s(realname,64,"real_%d.bin",version);
       fopen_s(&srealbin[max],realname,"rb");
       if( srealbin[max] == NULL )
       {
        MessageBox(0,L"请检查补丁的完整性",L"StoneAge",MB_ICONERROR);
        ExitProcess(0);
       }
       max++;
       fclose(fp);
      }

      _findclose(hFile);
      ret = 1;
     }

     _chdir("./../../");
     return max;
    }


    2012年9月18日 9:42

答案

  • 不了解具体情况,看起来这段代码与路径有关。跟据以往的经验,32位好使,64位不好使,通常都是路径错误。在64位下,程序路径是分32位和64位的,注册表也一样。
    2012年9月20日 6:43

全部回复

  • 请问在Win7下运行的时候会发生什么样的错误?

    麻烦把错误代码贴上来。


    Lazylamb loves smelly cat.

    2012年9月19日 7:07
  • _chdir("./data/sbin/")是什么,建议最好贴出完整的代码。

    Please not forget mark your answer, and unmark your disagreed point.

    2012年9月19日 7:10
  • WIN7下没有任何错误提示,只是代码功能不管用(可气的是WIN732位有时还管用,大部分时间无效。64位是彻底无效),我的QQ是727870834.希望大大们给看看,可以有偿!
    2012年9月19日 8:50
  • 只是代码功能不管用
    不管用是什么情况?

    Please not forget mark your answer, and unmark your disagreed point.

    2012年9月20日 1:56
  • 不了解具体情况,看起来这段代码与路径有关。跟据以往的经验,32位好使,64位不好使,通常都是路径错误。在64位下,程序路径是分32位和64位的,注册表也一样。
    2012年9月20日 6:43