www.pudn.com > change.rar > changeDoc.cpp


// changeDoc.cpp : implementation of the CChangeDoc class 
// 
 
#include "stdafx.h" 
#include "change.h" 
 
#include "changeDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CChangeDoc 
 
IMPLEMENT_DYNCREATE(CChangeDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CChangeDoc, CDocument) 
	//{{AFX_MSG_MAP(CChangeDoc) 
	ON_COMMAND(IDC_CHANGEDATA, OnChangedata) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CChangeDoc construction/destruction 
 
CChangeDoc::CChangeDoc() 
{ 
	// TODO: add one-time construction code here 
	m_pHexFile = NULL; 
	m_lFileLength = 0L; 
 
} 
 
CChangeDoc::~CChangeDoc() 
{ 
	if (m_pHexFile != NULL) 
	{ 
		m_pHexFile->Close();     
		delete m_pHexFile;      
		m_pHexFile = NULL;      
   }  
} 
 
BOOL CChangeDoc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	// TODO: add reinitialization code here 
	// (SDI documents will reuse this document) 
 
	return TRUE; 
} 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CChangeDoc serialization 
 
void CChangeDoc::Serialize(CArchive& ar) 
{ 
	if (ar.IsStoring()) 
	{ 
		// TODO: add storing code here 
	} 
	else 
	{ 
		// TODO: add loading code here 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CChangeDoc diagnostics 
 
#ifdef _DEBUG 
void CChangeDoc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CChangeDoc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CChangeDoc commands 
 
void CChangeDoc::OnChangedata()  
{ 
	// TODO: Add your command handler code here 
if (m_pHexFile != NULL) 
	{ 
		m_pHexFile->Close(); 
		delete m_pHexFile; 
	} 
	char *lpszPathName=".\\dst00.ict"; 
 	m_pHexFile = new CFile(lpszPathName, 
             CFile::modeRead | CFile::typeBinary); 
	if (!m_pHexFile) 
	{ 
		AfxMessageBox("该文件打开错"); 
		 
	} 
m_lFileLength = m_pHexFile->GetLength(); 
    LONG  fi=0; 
     
     
	//打开写的文件 
	FILE *stream; 
   stream = fopen( ".\\dst00.txt", "w" ); 
       
	do  
	{	 
		//行长为347 
		int nRet; 
		//读编号bh 
	   byte  bh[3]; 
	   int   bh2=0; 
	   nRet=m_pHexFile->Read(bh,3); 
       bh2=(int ) bh[2]+(int ) bh[1]*16*16+(int ) bh[0]*256*256; 
        
       //读区域 
	   char qy[4]; 
	   nRet=m_pHexFile->Read(qy,4); 
	   CString qystr=qy; 
	   //读单位码 
	   char dw[4]; 
	   CString dwstr; 
       nRet=m_pHexFile->Read(dw,4); 
	   dwstr=dw; 
	   //读姓名 
	   char xm[8]; 
	   CString xmstr; 
	   nRet=m_pHexFile->Read(xm,8); 
	   xmstr=xm; 
	   //读电话 
	   char tel[30]; 
	   nRet=m_pHexFile->Read(tel,30); 
	   //读帐号 
	   char zh[10]; 
	   nRet=m_pHexFile->Read(zh,10); 
	   //读单位名称 
	   char dwmc[30]; 
	   nRet=m_pHexFile->Read(dwmc,30); 
	   //读住址 
	   char zz[30]; 
	   nRet=m_pHexFile->Read(zz,30); 
	   // 读幢号 
	   char zh2[3]; 
	   nRet=m_pHexFile->Read(zh2,3); 
	   //读室号 
	   char sh[3]; 
	   nRet=m_pHexFile->Read(sh,3); 
	   //读不要的 
	   char byd[8]; 
	   nRet=m_pHexFile->Read(byd,8); 
	   //读入网日期 
	   char rwrq[6]; 
	   nRet=m_pHexFile->Read(rwrq,6); 
	   
	   //读建设费 
	   byte  jsf[4]; 
	   int   jsf2=0; 
	   nRet=m_pHexFile->Read(jsf,4); 
       jsf2=(int ) jsf[3]+(int ) jsf[2]*16*16+(int ) jsf[1]*256*256+(int ) jsf[0]*256*256*256; 
	 
	   //读收视费 
	   byte  ssf[4]; 
	   int   ssf2=0; 
	   nRet=m_pHexFile->Read(ssf,4); 
       ssf2=(int ) ssf[3]+(int ) ssf[2]*16*16+(int ) ssf[1]*256*256+(int ) ssf[0]*256*256*256; 
	   //读详细地址 
	   char xxdz[20]; 
       nRet=m_pHexFile->Read(xxdz,20); 
	   //读屏幕数 
       byte   pmq[2]; 
	   int   pmq2=0; 
	   nRet=m_pHexFile->Read(pmq,2); 
       pmq2=(int ) pmq[1]+(int ) pmq[0]*16*16; 
	   // 读终端数 
        byte  zds[2]; 
	   int   zds2=0; 
	   nRet=m_pHexFile->Read(zds,2); 
       zds2=(int ) zds[1]+(int ) zds[0]*16*16; 
	   //读集体数 
        byte  jts[2]; 
	   int   jts2=0; 
	   nRet=m_pHexFile->Read(jts,2); 
       jts2=(int ) jts[1]+(int ) jts[0]*16*16; 
 
	   //读开户性质 
	   char khxz[2]; 
       nRet=m_pHexFile->Read(khxz,2); 
 
	   //读欠费 
	   char qf[8]; 
      nRet=m_pHexFile->Read(qf,8); 
	  //读不要3 
	  char  byd3[164]; 
      nRet=m_pHexFile->Read(byd3,164); 
	  fi+=347; 
   
	  //写文本 
	//编号 
	int i; 
	int tmp,tmp2; 
    tmp=bh2; 
	//char *p; 
	i=0; 
	do { 
		tmp2=tmp%10; 
		tmp2=tmp2+48; 
		bh[i]=tmp2; 
		i++; 
		tmp=tmp/10; 
	}while(tmp!=0); 
	int k=i; 
 
	for(i=k-1;i>=0;i--) 
        fprintf(stream, "%c",bh[i]); 
		if(k<5) 
		for(i=k;i<5;i++) 
         fprintf(stream, "%c",' '); 
    
 
   //区域码 
 
   for(i=0;i<=3;i++) 
	{	 
	    fprintf(stream,"%c",qy[i]); 
	} 
	 
	  // fprintf(stream,"\t"); 
 
    //单位码 
     for(i=0;i<=3;i++) 
	{	 
	    fprintf(stream, "%c",dw[i]); 
	} 
	 
	  // fprintf(stream,"\t"); 
	 //姓名 
	   for(i=0;i<=7;i++) 
	{	 
	    fprintf(stream, "%c",xm[i]); 
	} 
 
	 //  fprintf(stream,"\t"); 
	   //电话 
	   for(i=0;i<=29;i++) 
	{	 
	    fprintf(stream, "%c",tel[i]); 
	} 
	 
	  // fprintf(stream,"\t"); 
 
	   //帐号 
      for(i=0;i<10;i++) 
	{	 
	    fprintf(stream, "%c",zh[i]); 
	} 
	 
	   //fprintf(stream,"\t"); 
	 //单位名称 
	 for(i=0;i<30;i++) 
	{	 
	    fprintf(stream, "%c",dwmc[i]); 
	} 
	  
	  // fprintf(stream,"\t"); 
	   //住址 
	    for(i=0;i<30;i++) 
	{	 
	    fprintf(stream, "%c",zz[i]); 
	} 
	  
	   //fprintf(stream,"\t"); 
	   //幢号 
	    for(i=0;i<3;i++) 
	{	 
	    fprintf(stream, "%c",zh2[i]); 
	} 
	 
	   //fprintf(stream,"\t"); 
	   //室号 
	    for(i=0;i<3;i++) 
	{	 
	    fprintf(stream, "%c",sh[i]); 
	} 
	 
	  // fprintf(stream,"\t"); 
	   //入网日期 
	    for(i=0;i<6;i++) 
	{	 
	    fprintf(stream, "%c",rwrq[i]); 
	} 
	 
	  // fprintf(stream,"\t"); 
	   //建设非 
	   tmp=jsf2; 
	   i=0; 
	 
	do { 
		tmp2=tmp%10; 
		tmp2=tmp2+48; 
		jsf[i]=tmp2; 
		i++; 
		tmp=tmp/10; 
	}while(tmp!=0); 
	 k=i; 
 
	for(i=k-1;i>=0;i--) 
        fprintf(stream, "%c",jsf[i]); 
	if(k<7) 
		for(i=k;i<7;i++) 
           fprintf(stream, "%c",' '); 
	  
	  // fprintf(stream,"\t\t");    
 
	   
	   //收视费 
	  tmp=ssf2; 
	   i=0; 
 
	  	 
	do { 
		tmp2=tmp%10; 
		tmp2=tmp2+48; 
		ssf[i]=tmp2; 
		i++; 
		tmp=tmp/10; 
	}while(tmp!=0); 
	 k=i; 
 
	for(i=k-1;i>=0;i--) 
        fprintf(stream, "%c",ssf[i]); 
	if(k<7) 
		for(i=k;i<7;i++) 
           fprintf(stream, "%c",' '); 
	 
	 //  fprintf(stream,"\t");    
   //详细地址 
      for(i=0;i<20;i++) 
   {    
	    fprintf(stream, "%c",xxdz[i]); 
	} 
	 
 
 	   //屏幕数 
	  tmp=pmq2; 
	   i=0; 
	  	do { 
		tmp2=tmp%10; 
		tmp2=tmp2+48; 
		pmq[i]=tmp2; 
		i++; 
		tmp=tmp/10; 
	}while(tmp!=0); 
	 k=i; 
 
	for(i=k-1;i>=0;i--) 
        fprintf(stream, "%c",pmq[i]); 
	if(k<3) 
		for(i=k;i<3;i++) 
           fprintf(stream, "%c",' '); 
	 
	 //  fprintf(stream,"\t");    
	   //终端数 
      tmp=zds2; 
	   i=0; 
	   	do { 
		tmp2=tmp%10; 
		tmp2=tmp2+48; 
		zds[i]=tmp2; 
		i++; 
		tmp=tmp/10; 
	}while(tmp!=0); 
	 k=i; 
 
	for(i=k-1;i>=0;i--) 
        fprintf(stream, "%c",zds[i]); 
		if(k<3) 
		for(i=k;i<3;i++) 
           fprintf(stream, "%c",' '); 
	  
	  // fprintf(stream,"\t");    
	   //集体户数 
	  tmp=jts2; 
	   i=0; 
	   	do { 
		tmp2=tmp%10; 
		tmp2=tmp2+48; 
		jts[i]=tmp2; 
		i++; 
		tmp=tmp/10; 
	}while(tmp!=0); 
	 k=i; 
 
	for(i=k-1;i>=0;i--) 
        fprintf(stream, "%c",jts[i]); 
		if(k<3) 
		for(i=k;i<3;i++) 
           fprintf(stream, "%c",' '); 
 
	  // fprintf(stream,"\t");    
	   //开户性质 
	   for(i=0;i<2;i++) 
	{	 
	    fprintf(stream, "%c",khxz[i]); 
	} 
	 
	 //  fprintf(stream,"\t"); 
	   //欠费 
   for(i=0;i<8;i++) 
   {    
	    fprintf(stream, "%c",qf[i]); 
	} 
	 
	   fprintf(stream,"\n"); 
 
} while(fi<=m_lFileLength);	 
   	fclose( stream ); 
}