各位老大 CStdioFile.Open() debug下面行,release下面就不行,这叫什么理由,很晕.

时间:2023-01-05 03:34:41
CStdioFile file;
  char exeFullPath[200];
  CString szFilePath,szTemp,szIP;  
  
  szFilePath.Format("%s",exeFullPath);
  int i = szFilePath.GetLength();
  i = i - 12;  //  "PushData.exe"  (length = 12)
  szFilePath = szFilePath.Left(i);
  szTemp = "PushData.inf";
  szTemp = szFilePath + szTemp;

  if(!file.Open(szTemp,CFile::modeRead|CFile::typeText))
  {
     MessageBox("文件打开失败");
   }

------------------------------------------------------
debug下面正常 , release 下面总是提示文件打不开,而且文件确实没有找开,
因为继续调用file.ReadString(szIP);时会报错,真是搞不懂。

3 个解决方案

#1


写掉了一句,是这样的。  麻烦各位给看看。
  CStdioFile file;
  char exeFullPath[200];
  CString szFilePath,szTemp,szIP;  

  GetModuleFileName(NULL,exeFullPath,200);       //上面掉了这句 
  szFilePath.Format("%s",exeFullPath);
  int i = szFilePath.GetLength();
  i = i - 12;  //  "PushData.exe"  (length = 12)
  szFilePath = szFilePath.Left(i);
  szTemp = "PushData.inf";
  szTemp = szFilePath + szTemp;

  if(!file.Open(szTemp,CFile::modeRead|CFile::typeText))
  {
     MessageBox("文件打开失败");
   }

#2


更改如下,我试过,是对的       
          CStdioFile file;    
          CString szFilePath
          TCHAR exeFullPath[MAX_PATH]; //程序路径
int len=GetModuleFileName(NULL,
exeFullPath, //应用程序全路径存放地址
MAX_PATH);
CString filepath;
filepath="\\PushData.exe";
strcpy(exeFullPath+len-12,filepath);
         szFilePath.Format("%s",exeFullPath);
         if(!file.Open(szFilePath,CFile::modeRead|CFile::typeText))
         {
              MessageBox("文件打开失败");
          }

#3


多谢了,找到问题了,原来是debug目录下有"PushData.inf"这个文件,而生成的Release目录下没放这个文件。

#1


写掉了一句,是这样的。  麻烦各位给看看。
  CStdioFile file;
  char exeFullPath[200];
  CString szFilePath,szTemp,szIP;  

  GetModuleFileName(NULL,exeFullPath,200);       //上面掉了这句 
  szFilePath.Format("%s",exeFullPath);
  int i = szFilePath.GetLength();
  i = i - 12;  //  "PushData.exe"  (length = 12)
  szFilePath = szFilePath.Left(i);
  szTemp = "PushData.inf";
  szTemp = szFilePath + szTemp;

  if(!file.Open(szTemp,CFile::modeRead|CFile::typeText))
  {
     MessageBox("文件打开失败");
   }

#2


更改如下,我试过,是对的       
          CStdioFile file;    
          CString szFilePath
          TCHAR exeFullPath[MAX_PATH]; //程序路径
int len=GetModuleFileName(NULL,
exeFullPath, //应用程序全路径存放地址
MAX_PATH);
CString filepath;
filepath="\\PushData.exe";
strcpy(exeFullPath+len-12,filepath);
         szFilePath.Format("%s",exeFullPath);
         if(!file.Open(szFilePath,CFile::modeRead|CFile::typeText))
         {
              MessageBox("文件打开失败");
          }

#3


多谢了,找到问题了,原来是debug目录下有"PushData.inf"这个文件,而生成的Release目录下没放这个文件。