📄 wrseg2.cpp
字号:
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 + -