⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrseg2.cpp

📁 《面向对象程序设计实用教程》一书的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	Sg2_wr.WriteHuge(&pot, 2) ;
	Sg2_wr.WriteHuge(Rec_10AscKey,Rec_10AscKey.GetLength() );	
    Sg2_wr.WriteHuge(&Row_2End,1 ) ;

	pot = Rec_11AscKey.GetLength() + 3;
	Sg2_wr.WriteHuge(&pot, 2) ;
	Sg2_wr.WriteHuge(Rec_11AscKey,Rec_11AscKey.GetLength() );	
    Sg2_wr.WriteHuge(&Row_2End,1 ) ;

	pot = Rec_12AscKey.GetLength() + 3;
	Sg2_wr.WriteHuge(&pot, 2) ;
	Sg2_wr.WriteHuge(Rec_12AscKey,Rec_12AscKey.GetLength() );	
    //Sg2_wr.WriteHuge("\n",1 ) ;
	Sg2_wr.WriteHuge(&Row_2End,1 ) ;
	Sg2_wr.WriteHuge(Rec_EndAscKey, 3); //Rec_13AscKey

	while(Sg2_wr.GetPosition ()%4 != 0 )
	{
		Sg2_wr.WriteHuge(&Row_2End,1 ) ; 
	}
	
	pot1 = Sg2_wr.GetPosition ();
	pot = pot1 - got ;
	Sg2_wr.Seek(got+2,CFile::begin);
	Sg2_wr.WriteHuge(&pot, 2);	
	Sg2_wr.Seek(pot1,CFile::begin);	
	
	//RecordDataBlock	
	  for(j=0;j<Ns_Count;j++)
	  {
	    pMyLine = (CMyLine* )m_CMyLineList.GetNext(m_position);					  					
		yp = pMyLine->y ;  
		Sg2_wr.WriteHuge(&yp, 4);				    
	  }

	}    //for N

  }	     //if(!m_CMyLineList.IsEmpty())

	Sg2_wr.Close();	


	//the end
}

BOOL WrSeg2::RSeg2( CString s[12], CObList& m_CMyLineList, CString m_path[10])
{	
	WORD FileFlag ;  //0-1
	WORD  ModifyNo ; //2-3
	WORD  M_Size ; //4-5
	WORD  N_Count; //6-7 
	BYTE StringEndLength; //8	
	BYTE String_1End; //9_1	
    BYTE String_2End; //9_2 ,10	
    BYTE RowEndLength; //11
	BYTE Row_1Enda;     //12_1
	BYTE Row_2End;     //12_2 ,13
	BYTE ReadyBytes[18];  //14-31
	DWORD BlockPoint[24] ; //32-N*4 ,64_bit
	CString L_date;	
	CString L_time;
	CString L_instrument;
	CString L_units;	
	CString L_trace;

	DWORD dw;
	WORD w;
	BYTE b;
	char l_date[36];
	float f;
	int i_d;
	DWORD l_i[24];	
//	int Nb0;//m16

	int i=0,N,Nb;
	CFile Sg2_wr;
	BOOL bl =  Sg2_wr.Open(m_path[0],CFile::modeRead );
	if(!bl) 
		AfxMessageBox("error");
	Sg2_wr.Seek(i,CFile::begin);
	Sg2_wr.ReadHuge(&FileFlag,2);//3a55
	if(FileFlag != 0x3a55) //m18
	{
		AfxMessageBox("非Sge2格式文件");
		return false;
	}
	Sg2_wr.ReadHuge(&ModifyNo,2);
    Sg2_wr.ReadHuge(&M_Size,2);
	N = M_Size / 4;
	Sg2_wr.ReadHuge(&N_Count,2);
	s[8].Format("%d",N_Count);
	s[8] += "CH";
	Sg2_wr.ReadHuge(&StringEndLength,1);
	Sg2_wr.ReadHuge(&String_1End,1);
	Sg2_wr.ReadHuge(&String_2End,1);
	Sg2_wr.ReadHuge(&RowEndLength,1);
	Sg2_wr.ReadHuge(&Row_1Enda,1);
	Sg2_wr.ReadHuge(&Row_2End,1);
	
	for(i=0;i<18;i++)//描述文件块是18个字节的预留区
	{	Sg2_wr.ReadHuge(&b,1);
		ReadyBytes[i] = b;
	}
	
	for( i=0;i<N;i++ )
	{	Sg2_wr.ReadHuge(&dw,4);
		l_i[i] = BlockPoint[i] = dw;		
	}
	
	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2);
	L_date = _T(l_date);
	i = L_date.Find("E") + 1 ;
	L_date = L_date.Mid(i);
	m_path[6] = L_date;

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2);
	L_time = _T(l_date);
	i = L_time.Find("E") + 1 ;
	L_time = L_time.Mid(i);
	//m_path[6] += L_time;
	m_path[7] = L_time;

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2);
	L_instrument = _T(l_date);
	
	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	L_units = _T(l_date);
	
	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	L_trace = _T(l_date);
	
	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	m_base = _T(l_date);
	int j;
	i = m_base.Find("BASE");
	j = m_base.Find("SHOT");
	//m16
	/*
	k = m_base.Find("MBER");
	s[0] = m_base.Mid(k+5);
	Nb0 = atoi(s[0]);	
	s[0].Format( "%d",Nb0);
	temp_s.Format("%d",Nb0+N-1);
	s[0] = s[0] + "-" + temp_s;
	*/
	//m16
	m_shoot = m_base.Mid(j+13);//,k-j-27);//m16_改	
	m_base =  m_base.Mid(i+13,j-i-14);	

	f = atof(m_base);	
	m_path[1].Format("%.2f",f);// m_base ;
	f = atof(m_shoot);
	m_path[3].Format("%.2f",f);// m_shoot ;
	
	//dk
	int Ni,yp;
	WORD RecordFlag;// = 0x4422;          //0-1	  
	WORD RecordBlock_Size;// = 0x3322;    //2-3 本描述块大小
	DWORD RecordDataBlock_Size;// = 4 * atoi(s[5]) ; //4-7
	DWORD Ns_Count;// = atoi(s[5]);               //8-11  4字节
	BYTE Data_Form;//=0x02;                //12
	BYTE Pre_Bytes[19];   //13-31

	 CString Rec_1AscKey;// ="CHANNEL_NUMBER " + temp_s ; //32
	 CString Rec_2AscKey;// ="DELAY " + s[6];
	 CString Rec_3AscKey;//="HIGH_CUT_FILTER " + s[1] ;	 
	 CString Rec_4AscKey;// ="LINE_ID " + m_lineno;   //侧线号
	 CString Rec_5AscKey;// ="LOW_CUT_FILTER " + s[2] ;  
	 CString Rec_6AscKey;
    POSITION m_position;     	
    m_position = m_CMyLineList.GetHeadPosition();
 for(Ni=0;Ni<N;Ni++)	
 { 
	Sg2_wr.Seek( l_i[Ni], CFile::begin ); //m3
	Sg2_wr.ReadHuge(&RecordFlag,2);
	if( RecordFlag != 17442 ) AfxMessageBox("Flag Error");
	Sg2_wr.ReadHuge(&RecordBlock_Size,2);
	Sg2_wr.ReadHuge(&RecordDataBlock_Size,4);
	Sg2_wr.ReadHuge(&Ns_Count,4); //采样长度	
	Sg2_wr.ReadHuge(&Data_Form,1);
	for(i=0;i<19;i++)//描述道块是19个字节的预留区
	{
		Sg2_wr.ReadHuge(&Pre_Bytes[i],1);
	}

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_1AscKey = _T(l_date);	
	i = Rec_1AscKey.Find("R");	
	Rec_1AscKey = Rec_1AscKey.Mid(i+2);	
	i = atoi(Rec_1AscKey);	
	if(Ni==0) 
	{
		Nb = i;
		s[5].Format("%d", Ns_Count);
	}
	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_2AscKey = _T(l_date);	
	i = Rec_2AscKey.Find("Y");	
	Rec_2AscKey = Rec_2AscKey.Mid(i+2);	
	f = atof(Rec_2AscKey);
	s[6].Format("%6.3f",f);

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_3AscKey = _T(l_date);	
	i = Rec_3AscKey.Find("R");	
	Rec_3AscKey = Rec_3AscKey.Mid(i+2);	
	f = atof(Rec_3AscKey);
	s[1].Format("%.1f",f);

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_4AscKey = _T(l_date);	
	i = Rec_4AscKey.Find("D");	
	m_path[5] = Rec_4AscKey.Mid(i+2);	

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_5AscKey = _T(l_date);	
	i = Rec_5AscKey.Find("R");	
	Rec_5AscKey = Rec_5AscKey.Mid(i+2);	
	//f = atoi(Rec_5AscKey);
	f = atof(Rec_5AscKey);
	s[2].Format("%.1f",f);

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("Y");	
	Rec_6AscKey = Rec_6AscKey.Mid(i+2);	
	i = atoi(Rec_6AscKey);
	if(i==0)
	{
		s[3] = "关";
	}else
	{
		s[3] = "开";
	}

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("D");	
	m_path[0] = Rec_6AscKey.Mid(i+2);

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("N");	
	m_path[4] = Rec_6AscKey.Mid(i+2);	
	i = atoi(m_path[4]);
	m_path[4].Format("%.2f", i - atof(m_path[2]) - atof(m_path[1]) * Ni);

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("L ");	
	Rec_6AscKey = Rec_6AscKey.Mid(i+1);	
	f = atof(Rec_6AscKey);//秒
	//f = atof(Rec_6AscKey)/1000.0;//毫秒
	s[4].Format("%.6f",f);   

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("N");	
	m_path[2] = Rec_6AscKey.Mid(i+2);	

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("K");	
	Rec_6AscKey = Rec_6AscKey.Mid(i+2);	
	i = atoi(Rec_6AscKey);
	s[9].Format("%d",i);   

	Sg2_wr.ReadHuge(&w,2);	
	Sg2_wr.ReadHuge(l_date,w-2); 
	Rec_6AscKey = _T(l_date);	
	i = Rec_6AscKey.Find("LE");	
	Rec_6AscKey = Rec_6AscKey.Mid(i+2);		
	//d = atof(Rec_6AscKey);
	//s[10].Format("%18.16f",d);   
	i_d = atoi(Rec_6AscKey);
	s[10].Format("%d",i_d);   

	Sg2_wr.Seek( l_i[Ni]+RecordBlock_Size, CFile::begin ); //m3

	//RecordDataBlock	
	//if(m_CMyLineList.IsEmpty()) return false;
	//m_position = m_CMyLineList.GetHeadPosition();
	for(j=0;j<Ns_Count;j++)
	  {	   
  		Sg2_wr.ReadHuge(&yp, 4);				
		CMyLine *pMyLine = new CMyLine(yp);
		m_CMyLineList.AddTail(pMyLine);

	  }


 }	

	CString sbn;
	sbn.Format("%d",Nb);
	s[0] = sbn;
	sbn.Format("%d",Nb+N-1);
	s[0] = s[0] + "-" + sbn;

	Sg2_wr.Close();	
	
	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -