WritePrivateProfileString函数写ini文件时,有时候速度特慢,不知道为什么!!?

John1202 2007-07-17 02:49:48
WritePrivateProfileString函数写ini文件时,有时候速度特慢,不知道为什么!!?

程序如下:

WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(g_ModelNodeInfo.m_pcDBBackupFile, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
char pcWasteNo[20];
sprintf(pcWasteNo,"%lu",m_nTableTollWasteNO-1);
WritePrivateProfileString("WasteNO","MinWasteNO",pcWasteNo,g_ModelNodeInfo.m_pcDBBackupFile);
} else
{
FindClose(hFind);
}

try
{
int nFlagStation = -1;
COleDateTime CreationTime((time_t)g_ModelTollInfo.m_TollWasteBook.m_nCreationTime);
char pcSession[20],pcBuf[50];
_itoa(m_nTableTollWasteNO,pcSession,10);

if(m_nTableTollWasteNO == (int)GetPrivateProfileInt(pcSession,"WASTE_NO",0,g_ModelNodeInfo.m_pcDBBackupFile)) return(0);

WritePrivateProfileString(pcSession,"NET_ID",_itoa(g_ModelNodeInfo.m_nNetID,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"STATION_ID",_itoa(g_ModelNodeInfo.m_nStationID,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"NODE_ID",_itoa(g_ModelNodeInfo.m_nNodeID,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"NODE_TYPE",_itoa(g_ModelNodeInfo.m_nNodeType,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"TRAFFIC","1",g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"WASTE_NO",_itoa(m_nTableTollWasteNO,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"CREATION_TIME",_itoa(g_ModelTollInfo.m_TollWasteBook.m_nCreationTime,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"OPERATOR_ID",_itoa(g_ModelOperatorInfo.m_nOperatorID,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"SHIFT_NO",_itoa(g_ModelOperatorInfo.m_nShiftNO,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"WORK_DATE",_itoa((int)g_ModelOperatorInfo.m_oletmWorkDate.m_dt,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);

SYSTEMTIME SystemTimeTemp;
g_ModelOperatorInfo.m_oletmLogonTime.GetAsSystemTime(SystemTimeTemp);
CTime CTimeLogonTime(SystemTimeTemp);
WritePrivateProfileString(pcSession,"LOGON_TIME",_itoa(CTimeLogonTime.GetTime(),pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);


WritePrivateProfileString(pcSession,"VEHICLE_CLASS",_itoa(g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"VEHICLE_CASE",_itoa(g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"VEHICLE_WEIGHT",_itoa(g_ModelTollInfo.m_TollWasteBook.m_nLoad,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);

WritePrivateProfileString(pcSession,"TOLL_RECEIVABLE",_itoa((int)g_ModelTollInfo.m_TollWasteBook.m_fTollReceivable,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileString(pcSession,"TOLL_ACTUAL",_itoa((int)g_ModelTollInfo.m_TollWasteBook.m_fTollActual,pcBuf,10),g_ModelNodeInfo.m_pcDBBackupFile);

WritePrivateProfileString(pcSession,"RECEIPT_NO",g_ModelTollInfo.m_TollWasteBook.m_pcReceiptNO,g_ModelNodeInfo.m_pcDBBackupFile);

char pcWasteNo[20];
sprintf(pcWasteNo,"%lu",m_nTableTollWasteNO);
WritePrivateProfileString("WasteNo","MaxWasteNO",pcWasteNo,g_ModelNodeInfo.m_pcDBBackupFile);
wchar_t pwcbuff[_MAX_PATH];
swprintf(pwcbuff,L"%hs",g_ModelNodeInfo.m_pcDBBackupFile);
WritePrivateProfileStringW( NULL, NULL, NULL, pwcbuff);

return(0);
}
catch(...)
{
return(1);
}
...全文
986 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-07-18
  • 打赏
  • 举报
回复
不至于这么慢吧?如果完整的程序,我可以晚上抽时间调试下看看。
John1202 2007-07-18
  • 打赏
  • 举报
回复
我现在改成了以流文件形式写,应该会好一点吧!

程序如下,多提意见:

ofstream DBBack;
DBBack.open(g_ModelNodeInfo.m_pcDBBackupFile, ios::app | ios::app);

sprintf(pcBuf,"%d",m_nTableTollWasteNO);
DBBack<<"["<<pcBuf<<"]"<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nNetID);
DBBack<<"NET_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nStationID);
DBBack<<"STATION_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nNodeID);
DBBack<<"NODE_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nNodeType);
DBBack<<"NODE_TYPE="<<pcBuf<<endl;

DBBack<<"TRAFFIC="<<"1"<<endl;

sprintf(pcBuf,"%d",m_nTableTollWasteNO);
DBBack<<"WASTE_NO="<<pcBuf<<endl;

_itoa(g_ModelTollInfo.m_TollWasteBook.m_nCreationTime,pcBuf,10);
DBBack<<"CREATION_TIME="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelOperatorInfo.m_nOperatorID);
DBBack<<"OPERATOR_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelOperatorInfo.m_nShiftNO);
DBBack<<"SHIFT_NO="<<pcBuf<<endl;

_itoa((int)g_ModelOperatorInfo.m_oletmWorkDate.m_dt,pcBuf,10);
DBBack<<"WORK_DATE="<<pcBuf<<endl;

SYSTEMTIME SystemTimeTemp;
g_ModelOperatorInfo.m_oletmLogonTime.GetAsSystemTime(SystemTimeTemp);
CTime CTimeLogonTime(SystemTimeTemp);

_itoa(CTimeLogonTime.GetTime(),pcBuf,10);
DBBack<<"LOGON_TIME="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass);
DBBack<<"VEHICLE_CLASS="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase);
DBBack<<"VEHICLE_CASE="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelTollInfo.m_TollWasteBook.m_nLoad);
DBBack<<"VEHICLE_WEIGHT="<<pcBuf<<endl;

sprintf(pcBuf,"%d",(int)g_ModelTollInfo.m_TollWasteBook.m_fTollReceivable);
DBBack<<"TOLL_RECEIVABLE="<<pcBuf<<endl;

sprintf(pcBuf,"%d",(int)g_ModelTollInfo.m_TollWasteBook.m_fTollActual);
DBBack<<"TOLL_ACTUAL="<<pcBuf<<endl;

DBBack<<"RECEIPT_NO="<<g_ModelTollInfo.m_TollWasteBook.m_pcReceiptNO<<endl;

DBBack.close();ofstream DBBack;
DBBack.open(g_ModelNodeInfo.m_pcDBBackupFile, ios::app | ios::app);

sprintf(pcBuf,"%d",m_nTableTollWasteNO);
DBBack<<"["<<pcBuf<<"]"<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nNetID);
DBBack<<"NET_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nStationID);
DBBack<<"STATION_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nNodeID);
DBBack<<"NODE_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelNodeInfo.m_nNodeType);
DBBack<<"NODE_TYPE="<<pcBuf<<endl;

DBBack<<"TRAFFIC="<<"1"<<endl;

sprintf(pcBuf,"%d",m_nTableTollWasteNO);
DBBack<<"WASTE_NO="<<pcBuf<<endl;

_itoa(g_ModelTollInfo.m_TollWasteBook.m_nCreationTime,pcBuf,10);
DBBack<<"CREATION_TIME="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelOperatorInfo.m_nOperatorID);
DBBack<<"OPERATOR_ID="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelOperatorInfo.m_nShiftNO);
DBBack<<"SHIFT_NO="<<pcBuf<<endl;

_itoa((int)g_ModelOperatorInfo.m_oletmWorkDate.m_dt,pcBuf,10);
DBBack<<"WORK_DATE="<<pcBuf<<endl;

SYSTEMTIME SystemTimeTemp;
g_ModelOperatorInfo.m_oletmLogonTime.GetAsSystemTime(SystemTimeTemp);
CTime CTimeLogonTime(SystemTimeTemp);

_itoa(CTimeLogonTime.GetTime(),pcBuf,10);
DBBack<<"LOGON_TIME="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass);
DBBack<<"VEHICLE_CLASS="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase);
DBBack<<"VEHICLE_CASE="<<pcBuf<<endl;

sprintf(pcBuf,"%d",g_ModelTollInfo.m_TollWasteBook.m_nLoad);
DBBack<<"VEHICLE_WEIGHT="<<pcBuf<<endl;

sprintf(pcBuf,"%d",(int)g_ModelTollInfo.m_TollWasteBook.m_fTollReceivable);
DBBack<<"TOLL_RECEIVABLE="<<pcBuf<<endl;

sprintf(pcBuf,"%d",(int)g_ModelTollInfo.m_TollWasteBook.m_fTollActual);
DBBack<<"TOLL_ACTUAL="<<pcBuf<<endl;

DBBack<<"RECEIPT_NO="<<g_ModelTollInfo.m_TollWasteBook.m_pcReceiptNO<<endl;

DBBack.close();
jixingzhong 2007-07-17
  • 打赏
  • 举报
回复
blog.csdn.net/surpaimb/archive/2006/08/21/1103357.aspx
www.lihuasoft.net/article/show.php?id=3360
jixingzhong 2007-07-17
  • 打赏
  • 举报
回复
优化一下 ...
neosu 2007-07-17
  • 打赏
  • 举报
回复
每次WritePrivateProfileString都需要打开文件,读取,查找键,重写整个文件。

网上有很多优化的替代。 先在内存中处理好, 最后写整个文件。
webipstin 2007-07-17
  • 打赏
  • 举报
回复
记得有工具软件写ini

只写:0101010101011101011100001001011010...

这样就快了。

不过,可读性几简乎为0

再嫌慢就用XML
John1202 2007-07-17
  • 打赏
  • 举报
回复
这个函数总体运行有时候需要7-8秒钟,但大多数情况下没问题,偶尔一段时间会出现

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧