首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

WritePrivateProfileString函数写ini文件时,有时候速度特慢,不知道为什么!该如何处理

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

WritePrivateProfileString函数写ini文件时,有时候速度特慢,不知道为什么!!?
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);
}

[解决办法]
记得有工具软件写ini

只写:0101010101011101011100001001011010...

这样就快了。

不过,可读性几简乎为0

再嫌慢就用XML
[解决办法]
每次WritePrivateProfileString都需要打开文件,读取,查找键,重写整个文件。

网上有很多优化的替代。 先在内存中处理好, 最后写整个文件。
[解决办法]
blog.csdn.net/surpaimb/archive/2006/08/21/1103357.aspx
www.lihuasoft.net/article/show.php?id=3360
[解决办法]
不至于这么慢吧?如果完整的程序,我可以晚上抽时间调试下看看。

热点排行