zoukankan      html  css  js  c++  java
  • VC++ MFC 文件处理unicode

     1.读取文件;

    // TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");
       //跳出对话框,选择指定的文件类型
       TCHAR szFilters[]= _T("DXF Files (*.dxf)|*.dxf");

       // Create an Open dialog; the default file name extension is ".my".
       CFileDialog fileDlg(TRUE, _T("dxf"), _T("*.dxf"),
          OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);

       // Display the file dialog. When user clicks OK, fileDlg.DoModal()  
       
    // returns IDOK. 
       if(fileDlg.DoModal() == IDOK)
       {
          CString pathName = fileDlg.GetPathName();

          // Implement opening and reading file in here. 

          
    //Change the window's title to the opened file's title.
          CString fileName = fileDlg.GetFileTitle();
          CString strLine;    
          CStdioFile myFile;
           
          myFile.Open(pathName,CFile::modeRead);
          //逐行读取
          while(myFile.ReadString(strLine))
          {
             if(strLine=="AcDbLine")
             {            
                 do 
                 {
                     
                     myFile.ReadString(strLine);
                     strLine.Trim();
                     if(strLine=="10")
                     {
                        myLinePoint.push_back(LinePoint());    
                        myFile.ReadString(strLine);            
                        myLinePoint[i].start_x=_tstof(strLine);
                     }
                     if(strLine=="31")
                     {
                         myFile.ReadString(strLine);
                        
                         myLinePoint[i].end_z=_tstof(strLine);
                         i++;
                     }
                     
                 } while (strLine!="0");

             }
          }

    2.跳出对话框选择文件目录,list勾选所选择的项目,读取文本文档,写入文本档,进度条;

    void CFurtherConvertCutCodeView::OnBnClickedButtonBrowser()
    {
    	CString filePath;
    	m_ProgressFile.SetPos(0);
    	m_ListFiles.ResetContent();
    	TCHAR szPath[_MAX_PATH];
    	BROWSEINFO bi;
    	bi.hwndOwner=NULL;
    	bi.pidlRoot=NULL;
    	bi.lpszTitle=_T("文件浏览");
    	bi.pszDisplayName=szPath;
    	bi.ulFlags=BIF_RETURNONLYFSDIRS;
    	bi.lParam=NULL;
    	bi.lpfn=NULL;
    	LPITEMIDLIST pItemIDList=SHBrowseForFolder(&bi);
    	if(pItemIDList)
    	{
    		if(SHGetPathFromIDList(pItemIDList,szPath))
    		filePath=szPath;
    		CFileFind finder;
    		CString strFilenName;
    		BOOL bWorking=finder.FindFile(filePath+"\\*.din");
    		while(bWorking)
    		{
    			bWorking = finder.FindNextFile();
    			strFilenName=(LPCTSTR)finder.GetFileName();  //str为取得一个文件名
    			m_ListFiles.AddString(strFilenName);
    		}
    		
    	}
    	else
    	{
           filePath="";
    	}
    
    	GetDlgItem(IDC_STATIC_Browse)->SetWindowText(filePath);
    	
    
    }
    
    
    void CFurtherConvertCutCodeView::OnBnClickedButtonRun()
    {
    	// TODO: Add your control notification handler code here
    	CString strFilePath;
    	//添加光顺后程序保存的目录
    	CString strPath;
    	GetDlgItem(IDC_STATIC_Browse)->GetWindowText(strFilePath);
    	CString strFileName;
    	//找出勾选的项目
    	int iSel=m_ListFiles.GetCount();
    	if(iSel>0)
    	{
    		   strPath=strFilePath+_T("\\_GCG261");
    		   CreateDirectory(strPath,NULL);
    	}
    	m_ProgressFile.SetPos(0);
    	int j=0;
    	for(int i=0;i<iSel;i++)
    	{
    		int ik=m_ListFiles.GetCheck(i);
    		if(m_ListFiles.GetCheck(i)==1)
    		{
    			j++;			
    		}		
    
    	}
    	m_ProgressFile.SetRange(0,j);
    	m_ProgressFile.SetStep(1);
    	for(int i=0;i<iSel;i++)
    	{
    		int ik=m_ListFiles.GetCheck(i);
    		if(m_ListFiles.GetCheck(i)==1)
    		{
    			m_ListFiles.GetText(i,strFileName);
    			ReadCodeFile(strFilePath+"\\"+strFileName,strPath+"\\"+strFileName);
    			m_ProgressFile.StepIt();		   
    		}		
    		
    	}
    }
    void CFurtherConvertCutCodeView::ReadCodeFile(CString strFileName,CString strWriteFileName)
    {
    	CStringList listLines;	
    	CString strLine;	
    	CString strPartLine;
    	CStdioFile writeFile;
    	bool isG01=false;	
    	bool isAddG261=false;
    	bool isBreak=false;
    	int i;
    	CStdioFile myFile;
    	myFile.Open(strFileName,CFile::modeRead);
    	
    	CFile mFile;
    	mFile.Open(strWriteFileName,CFile::modeCreate|CFile::modeWrite);
    	
    	//逐行读取
    	while(myFile.ReadString(strLine))
    	{
    	   CArchive ar(&mFile,CArchive::store); 
    		if(strLine=="M07")
    		{
    			i=0;
    			while(isBreak!=true)
    			{
    				myFile.ReadString(strLine);	
    				i=i+1;
    				if(strLine.Find(_T("G01"))!=-1&&strLine.Find(_T("X"))!=-1&&strLine.Find(_T("Y"))!=-1)
    				{
    					isG01=true;
    				    i=1;
    				}
    				if(isG01==true && i==2)
    				{
    					if(strLine.Find(_T("G02"))>-1||strLine.Find(_T("G03"))>-1)
    					{
    						isAddG261=true;	
    						isBreak=true;
    					}
    				}
    				if(strLine.Find(_T("M08"))!=-1)
    				{
    					isBreak=true;
    				}
    				listLines.AddTail(strLine);
    			 }//end while
    		   isBreak=false;
    		   if(isAddG261==true)
    		   {
    			   strLine="G261\r\nM07";		      
    		   }
    		   else
    		   {
    		       strLine="M07";	
    		   }
    		}//end if M07
    		if(strLine.Find(_T("M08"))!=-1&&isAddG261==true)
    		{           
    			 strLine="G260\r\nM08";
    			 isAddG261=false;
    		}
    	
    		
    		ar.WriteString(strLine);
    		ar.WriteString(_T("\r\n"));
    
    	    POSITION rPos;
    		rPos=listLines.GetHeadPosition();
    		while(rPos!=NULL)
    		{
    			strPartLine=listLines.GetNext(rPos);
    			ar.WriteString(strPartLine);
    			ar.WriteString(_T("\r\n"));			
    		}
    		listLines.RemoveAll();
    		ar.Close();	
    		
    	}//end while
    	
    	mFile.Close();
    }
    
  • 相关阅读:
    warmup_csaw_2016
    pwn-简单栈溢出
    吃土
    编程中的进制转换
    linux系统安全及应用——账号安全(基本安全措施)
    vmware vSphere虚拟网络之标准交换机(二)
    vmware vSphere虚拟网络(一)
    服务器虚拟化技术概述
    用shell脚本安装apache
    The server of Apache (二)——apache服务客户端验证
  • 原文地址:https://www.cnblogs.com/ike_li/p/2744415.html
Copyright © 2011-2022 走看看