📄 configfile.cpp
字号:
// ConfigFile.cpp: implementation of the CConfigFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "DocSave.h"
#include "ConfigFile.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CConfigFile::CConfigFile()
{
int i;
m_FilePath="C:\\Config.txt";
m_BufferSize=1024*48;
m_DataSize=0;
m_GpsLen=0;
m_CpLen=0;
m_AnnLen=0;
m_DefineLen=0;
for(i=0;i<m_BufferSize;i++)
m_Buffer[i]=0;
}
CConfigFile::~CConfigFile()
{
}
BOOL CConfigFile::Read()
{
CFile configfile;
if(!configfile.Open(m_FilePath,CFile::modeReadWrite|CFile::typeBinary))
return FALSE;
DWORD FileLen=configfile.GetLength();
if(FileLen > (DWORD)m_BufferSize)
FileLen=(DWORD)m_BufferSize;
m_DataSize=(int)(configfile.Read(m_Buffer,FileLen));
configfile.Close();
DelNote(); //去掉注释
return TRUE;
}
//DEL BOOL CConfigFile::Write(CString string)
//DEL {
//DEL CFile configfile;
//DEL if(!configfile.Open(m_FilePath,CFile::modeReadWrite|CFile::typeBinary))
//DEL return FALSE;
//DEL
//DEL return TRUE;
//DEL
//DEL }
void CConfigFile::DelNote()
{
CString szt="";
char cc,ccp=0;
for(int i=0;i<m_DataSize;i++)
{
cc=m_Buffer[i];
if(cc != '/')
{
szt+=cc;
ccp=cc;
}
else //cc=='/'
{
if(i<m_DataSize)
{
if(m_Buffer[i+1]=='/') //注释开始
{
while((i<m_DataSize)&&(m_Buffer[i]!=0x0d))
{
i++;
}
if(m_Buffer[i]==0x0d)
{
i--;
}
ccp=0;
}
else
{
szt+=cc;
ccp=cc;
}
}
}
}
m_DataSize=szt.GetLength();
sprintf(m_Buffer,"%s",szt);
int ns=szt.Find("#DEFINEGPS_BEGIN",0);
int ne=szt.Find("#DEFINEGPS_END",0);
if((ns==-1)||(ne==-1)) return;
ns+=16;
m_GpsDefine="";
for(i=ns;i<ne;i++) m_GpsDefine+=szt[i];
m_GpsDefine.TrimLeft();
m_GpsDefine.TrimRight();
m_GpsLen=m_GpsDefine.GetLength();
ns=szt.Find("#DEFINECP_BEGIN",0);
ne=szt.Find("#DEFINECP_END",0);
if((ns==-1)||(ne==-1)) return;
ns+=15;
m_CpDefine="";
for(i=ns;i<ne;i++) m_CpDefine+=szt[i];
m_CpDefine.TrimLeft();
m_CpDefine.TrimRight();
m_CpLen=m_CpDefine.GetLength();
ns=szt.Find("#DEFINEANN_BEGIN",0);
ne=szt.Find("#DEFINEANN_END",0);
if((ns==-1)||(ne==-1)) return;
ns+=16;
m_AnnDefine="";
for(i=ns;i<ne;i++) m_AnnDefine+=szt[i];
m_AnnDefine.TrimLeft();
m_AnnDefine.TrimRight();
m_AnnLen=m_AnnDefine.GetLength();
ns=szt.Find("#DEFINEHEADING_BEGIN",0);
ne=szt.Find("#DEFINEHEADING_END",0);
if((ns==-1)||(ne==-1)) return;
ns+=20;
m_HeadingDefine="";
for(i=ns;i<ne;i++) m_HeadingDefine+=szt[i];
m_HeadingDefine.TrimLeft();
m_HeadingDefine.TrimRight();
m_HeadingLen=m_HeadingDefine.GetLength();
ns=szt.Find("#DEFINEPITCH_BEGIN",0);
ne=szt.Find("#DEFINEPITCH_END",0);
if((ns==-1)||(ne==-1)) return;
ns+=18;
m_PitchDefine="";
for(i=ns;i<ne;i++) m_PitchDefine+=szt[i];
m_PitchDefine.TrimLeft();
m_PitchDefine.TrimRight();
m_PitchLen=m_PitchDefine.GetLength();
}
BOOL CConfigFile::GetGpsDefine(CString &Value)
{
CString DefineName="GpsComm=";
if(DefineName.IsEmpty()) return FALSE;
int nLen=DefineName.GetLength();
int ns=m_GpsDefine.Find("GpsComm=",0);
if(ns==-1) return FALSE;
Value.Empty();
int i=ns+nLen;
BOOL bStartCopy=FALSE;
char cc;
while(i<m_GpsLen)
{
cc=m_GpsDefine[i];
if((cc!=0x0D)&&(cc!=0x0A)&&(cc!='\t')&&(cc!=0x20))
{
if(bStartCopy==FALSE)
bStartCopy=TRUE;
Value+=m_GpsDefine[i];
}
else
{
if(bStartCopy) break;
}
i++;
}
Value.TrimLeft();
Value.TrimRight();
return TRUE;
}
BOOL CConfigFile::GetCpDefine(CString &Value)
{
CString DefineName="CpComm=";
if(DefineName.IsEmpty()) return FALSE;
int nLen=DefineName.GetLength();
int ns=m_CpDefine.Find("CpComm=",0);
if(ns==-1) return FALSE;
Value="";
int i=ns+nLen;
BOOL bStartCopy=FALSE;
char cc;
while(i<m_CpLen)
{
cc=m_CpDefine[i];
if((cc!=0x0D)&&(cc!=0x0A)&&(cc!='\t')&&(cc!=0x20))
{
if(bStartCopy==FALSE)
bStartCopy=TRUE;
Value+=m_CpDefine[i];
}
else
{
if(bStartCopy) break;
}
i++;
}
Value.TrimLeft();
Value.TrimRight();
return TRUE;
}
BOOL CConfigFile::GetAnnDefine(CString &Value)
{
CString DefineName="AnnComm=";
if(DefineName.IsEmpty()) return FALSE;
int nLen=DefineName.GetLength();
int ns=m_AnnDefine.Find("AnnComm=",0);
if(ns==-1) return FALSE;
Value="";
int i=ns+nLen;
BOOL bStartCopy=FALSE;
char cc;
while(i<m_AnnLen)
{
cc=m_AnnDefine[i];
if((cc!=0x0D)&&(cc!=0x0A)&&(cc!='\t')&&(cc!=0x20))
{
if(bStartCopy==FALSE)
bStartCopy=TRUE;
Value+=m_AnnDefine[i];
}
else
{
if(bStartCopy) break;
}
i++;
}
Value.TrimLeft();
Value.TrimRight();
return TRUE;
}
BOOL CConfigFile::WriteToFile(CString string1,CString string2)
{
CFile configfile;
if(!configfile.Open(m_FilePath, CFile::modeReadWrite|CFile::typeBinary))
return FALSE;
DWORD FileLen=configfile.GetLength();
if(FileLen > (DWORD)m_BufferSize)
FileLen=(DWORD)m_BufferSize;
// configfile.SeekToBegin();
m_DataSize=(int)(configfile.Read(m_Buffer,FileLen));
CString str1 = "";
for(int i=0;i<m_DataSize;i++) str1+=m_Buffer[i];
CString str2 = "Heading="+string1;
int ns1 = str1.Find("Heading=");
int ne1 = str1.Find("#DEFINEHEADING_END");
str1.Delete(ns1,ne1-ns1);
str1.Insert(ns1,str2);
CString str3 = "Pitch="+string2;
int ns2 = str1.Find("Pitch=");
int ne2 = str1.Find("#DEFINEPITCH_END");
str1.Delete(ns2,ne2-ns2);
str1.Insert(ns2,str3);
// configfile.SetLength(0);
// configfile.SeekToBegin();
configfile.SetLength(1024*48);
configfile.SeekToBegin();
configfile.Write(str1,str1.GetLength());
configfile.Close();
// CStdioFile config("C:\\Config1.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::typeBinary);
// config.Open("C:\\Config1.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::typeBinary);
// configfile.Write(str1,str1.GetLength());
// configfile.Close();
return true;
}
BOOL CConfigFile::GetHeadingDefine(CString &Value)
{
CString DefineName="Heading=";
if(DefineName.IsEmpty()) return FALSE;
int nLen=DefineName.GetLength();
int ns=m_HeadingDefine.Find("Heading=",0);
if(ns==-1) return FALSE;
Value="";
int i=ns+nLen;
BOOL bStartCopy=FALSE;
char cc;
while(i<m_HeadingLen)
{
cc=m_HeadingDefine[i];
if((cc!=0x0D)&&(cc!=0x0A)&&(cc!='\t')&&(cc!=0x20))
{
if(bStartCopy==FALSE)
bStartCopy=TRUE;
Value+=m_HeadingDefine[i];
}
else
{
if(bStartCopy) break;
}
i++;
}
Value.TrimLeft();
Value.TrimRight();
return TRUE;
}
BOOL CConfigFile::GetPitchDefine(CString &Value)
{
CString DefineName="Pitch=";
if(DefineName.IsEmpty()) return FALSE;
int nLen=DefineName.GetLength();
int ns=m_PitchDefine.Find("Pitch=",0);
if(ns==-1) return FALSE;
Value="";
int i=ns+nLen;
BOOL bStartCopy=FALSE;
char cc;
while(i<m_PitchLen)
{
cc=m_PitchDefine[i];
if((cc!=0x0D)&&(cc!=0x0A)&&(cc!='\t')&&(cc!=0x20))
{
if(bStartCopy==FALSE)
bStartCopy=TRUE;
Value+=m_PitchDefine[i];
}
else
{
if(bStartCopy) break;
}
i++;
}
Value.TrimLeft();
Value.TrimRight();
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -