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

📄 test_dbf.cpp

📁 读写DBF文件的库
💻 CPP
字号:
#include "stdafx.h"
#include "test_dbf.h"


//该文件处理写文件的过程(包括数据库定义和写数据库)
void  InitDBFFileStruct(FIELD_REC *field_rec)
{
	int  num = 0;

	memset(field_rec, 0, sizeof(field_rec));
	Dbf::AddField(field_rec[num++], "ID",   'N', 8);
	Dbf::AddField(field_rec[num++], "TIME", 'C', 8);
	Dbf::AddField(field_rec[num++], "LON",  'N', 12, 6);
	Dbf::AddField(field_rec[num++], "LAT",  'N', 12, 6);
	Dbf::AddField(field_rec[num++], "STATUS", 'N', 6);
	Dbf::AddField(field_rec[num++], "PROTOCOL", 'N', 4);
	Dbf::AddField(field_rec[num++], "MESSAGE",    'C', 30);
	Dbf::AddField(field_rec[num++], "SRCSTRING",  'C', 120);
	Dbf::AddField(field_rec[num++], "RXLEVF",  'N', 3);
	Dbf::AddField(field_rec[num++], "RXQUALF",  'N', 3);
	Dbf::AddField(field_rec[num++], "RXLEVS",  'N', 3);
	Dbf::AddField(field_rec[num++], "RXQUALS",  'N', 3);
	Dbf::AddField(field_rec[num++], "ACTRLINK",  'N', 3);
	Dbf::AddField(field_rec[num++], "MAXRLINK",  'N', 3);
	Dbf::AddField(field_rec[num++], "C1",  'N', 3);
	Dbf::AddField(field_rec[num++], "C2",  'N', 3);
	Dbf::AddField(field_rec[num++], "FER",  'N', 5);
	Dbf::AddField(field_rec[num++], "NBCCH_1",  'N', 3);
	Dbf::AddField(field_rec[num++], "NRXLEV_1",  'N', 3);
	Dbf::AddField(field_rec[num++], "NBSIC_1", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC1_1", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC2_1", 'N', 3);
	Dbf::AddField(field_rec[num++], "NBCCH_2",  'N', 3);
	Dbf::AddField(field_rec[num++], "NRXLEV_2",  'N', 3);
	Dbf::AddField(field_rec[num++], "NBSIC_2", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC1_2", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC2_2", 'N', 3);
	Dbf::AddField(field_rec[num++], "NBCCH_3",  'N', 3);
	Dbf::AddField(field_rec[num++], "NRXLEV_3",  'N', 3);
	Dbf::AddField(field_rec[num++], "NBSIC_3", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC1_3", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC2_3", 'N', 3);
	Dbf::AddField(field_rec[num++], "NBCCH_4",  'N', 3);
	Dbf::AddField(field_rec[num++], "NRXLEV_4",  'N', 3);
	Dbf::AddField(field_rec[num++], "NBSIC_4", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC1_4", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC2_4", 'N', 3);
	Dbf::AddField(field_rec[num++], "NBCCH_5",  'N', 3);
	Dbf::AddField(field_rec[num++], "NRXLEV_5",  'N', 3);
	Dbf::AddField(field_rec[num++], "NBSIC_5", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC1_5", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC2_5", 'N', 3);
	Dbf::AddField(field_rec[num++], "NBCCH_6",  'N', 3);
	Dbf::AddField(field_rec[num++], "NRXLEV_6",  'N', 3);
	Dbf::AddField(field_rec[num++], "NBSIC_6", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC1_6", 'N', 3);
	Dbf::AddField(field_rec[num++], "NC2_6", 'N', 3);
	Dbf::AddField(field_rec[num++], "NINVALID", 'N', 3);
	Dbf::AddField(field_rec[num++], "" , 'C', 1);   //end.
}


BOOL  OpenDBFFile(DBFFILE &dbf, const char *filename)
{
	return dbf.Open(filename, RDONLY);
}


BOOL  CreateDBFFile(DBFFILE &dbf, const char *filename)
{
	FIELD_REC field_rec[130];

	InitDBFFileStruct(field_rec);

	if( ! dbf.Create(filename ,field_rec) )
	{
		printf("cannot create file %s\n", filename);
		return FALSE;
	}
	return TRUE;
}


BOOL  WriteDBFFile(DBFFILE &dbf, MAINTESTDATA *pdata)
{
	static int dbf_id = 0;
	//以下根据标志写数据库。
	dbf.ClearRecBuf();
	dbf.Append("LON");
	dbf.SetFieldValue("ID",			dbf_id++ );
	dbf.SetFieldValue("STATUS",		pdata->Status);
	dbf.SetFieldValue("PROTOCOL",	pdata->Protocol);
	dbf.SetFieldValue("TIME",		pdata->Time); //CurTime());
	dbf.SetFieldValue("LON",		pdata->Lon);
	dbf.SetFieldValue("LAT",		pdata->Lat);
	dbf.SetFieldValue("MESSAGE",	pdata->Message);
	dbf.SetFieldValue("SRCSTRING",  pdata->SrcString);
	dbf.SetFieldValue("NUMFRAME",   pdata->NumFrame);
	dbf.SetFieldValue("TYPEDCH",    pdata->TypeDCH);
	dbf.SetFieldValue("NUMDCH",     pdata->NumDCH);
	dbf.SetFieldValue("HOPPING",    pdata->Hopping);
	dbf.SetFieldValue("MAIODCH",    pdata->MaioDCH);
	dbf.SetFieldValue("HSNDCH",     pdata->HsnDCH );
	dbf.SetFieldValue("BSICSERV",   pdata->BsicServ);
	dbf.SetFieldValue("BCCHSERV",   pdata->BcchServ);
	dbf.SetFieldValue("CISERV",     pdata->CiServ);
	dbf.SetFieldValue("LACSERV",    pdata->LacServ);
	dbf.SetFieldValue("MCCSERV",    pdata->MccServ);
	dbf.SetFieldValue("MNCSERV",    pdata->MncServ);
	dbf.SetFieldValue("TA",			pdata->Ta);
	dbf.SetFieldValue("TS",			pdata->Ts);
	dbf.SetFieldValue("TXPWR",		pdata->TxPower);
	dbf.SetFieldValue("RXLEVF",		pdata->RxlevF);
	dbf.SetFieldValue("RXQUALF",	pdata->RxqualF);
	dbf.SetFieldValue("RXLEVS",		pdata->RxlevS);
	dbf.SetFieldValue("RXQUALS",	pdata->RxqualS);
	dbf.SetFieldValue("ACTRLINK",	pdata->ActRlink );
	dbf.SetFieldValue("MAXRLINK",	pdata->MaxRlink );
	dbf.SetFieldValue("C1",			pdata->C1);
	dbf.SetFieldValue("C2",			pdata->C2);
	dbf.SetFieldValue("FER",		pdata->Fer);
	dbf.Update();

	return TRUE;
}


BOOL  ReadDBFFile(DBFFILE &dbf, MAINTESTDATA *pdata)
{
/*	pdata->Status = dbf.GetFieldInt("Status");
	pdata->Protocol = dbf.GetFieldInt("Protocol");
	dbf.GetFieldString("TIME", pdata->Time);

	dbf.GetFieldString("Message" ,pdata->Message);
	dbf.GetFieldString("SrcString" ,pdata->SrcString );
	pdata->Lon	= dbf.GetFieldDouble("Lon");
	pdata->Lat   = dbf.GetFieldDouble("Lat");
	dbf.GetFieldString("NumFrame" , pdata->NumFrame );
	dbf.GetFieldString("TypeDCH" ,pdata->TypeDCH );
	dbf.GetFieldString("NumDCH", pdata->NumDCH);
	dbf.GetFieldString("MaioDCH", pdata->MaioDCH);
	dbf.GetFieldString("HsnDCH", pdata->HsnDCH);
	//strcpy(pdata->CellServ,
	pdata->BsicServ  = dbf.GetFieldInt("BsicServ");
	pdata->BcchServ  = dbf.GetFieldInt("BcchServ");
	dbf.GetFieldString("CiServ", pdata->CiServ);
	dbf.GetFieldString("LacServ", pdata->LacServ);
	dbf.GetFieldString("MccServ", pdata->MccServ);
	dbf.GetFieldString("MncServ" ,pdata->MncServ);
	pdata->Ta = dbf.GetFieldShort("Ta");
	pdata->Ts = dbf.GetFieldShort("Ts");

	pdata->RxlevS  = dbf.GetFieldShort("RxLevS");
	pdata->ActRlink = dbf.GetFieldShort("ActRLink");
	pdata->MaxRlink = dbf.GetFieldShort("MaxRLink");
	pdata->C1       = dbf.GetFieldShort("C1");
	pdata->C2	   = dbf.GetFieldShort("C2");
	pdata->Fer	   = dbf.GetFieldShort("Fer");
	pdata->TxPower = dbf.GetFieldShort("TxPwr");
	pdata->RxlevF  = dbf.GetFieldShort("RxLevF");
	pdata->RxqualF = dbf.GetFieldShort("RxqualF");
*/
	return TRUE;
}


⌨️ 快捷键说明

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