C++ 配置檔案讀寫
阿新 • • 發佈:2019-01-26
void CAamsProtocol::WriteConfig()
{
TCHAR tcExePath[MAX_PATH] = {0};
::GetModuleFileName(NULL, tcExePath, MAX_PATH);
// 設定ini路徑到exe同一目錄下
#ifndef CONFIG_FILE
#define CONFIG_FILE (TEXT("Config.ini"))
#endif
//_tcsrchr() 反向搜尋獲得最後一個'\\'的位置,並返回該位置的指標
TCHAR *pFind = _tcsrchr(tcExePath, '\\');
if (pFind == NULL)
{
return;
}
*pFind = '\0';
CString szIniPath = tcExePath;
szIniPath += "\\";
szIniPath += CONFIG_FILE;
//--------------------------------------------------------
//BOOL WritePrivateProfileString(
// LPCTSTR lpAppName, //節的名字,是一個以0結束的字串
// LPCTSTR lpKeyName, //鍵的名字,是一個以0結束的字串。若為NULL,則刪除整個節
// LPCTSTR lpString, //鍵的值,是一個以0結束的字串。若為NULL,則刪除對應的鍵
// LPCTSTR lpFileName //要寫入的檔案的檔名。若該ini檔案與程式在同一個目錄下,
// ) 也可使用相對路徑,否則需要給出絕度路徑。
//如果Ini不存在,它會自動在szIniPath上建立此INI檔案.再執行寫入.
CString ip1;
ip1.Format(_T("%d"),(work.nSocketAddress & 0xFF000000) >> 24);
CString ip2;
ip2.Format(_T("%d"),(work.nSocketAddress & 0x00FF0000) >> 16);
CString ip3;
ip3.Format(_T("%d"),(work.nSocketAddress & 0x0000FF00) >> 8);
CString ip4;
ip4.Format(_T("%d"),(work.nSocketAddress & 0x000000FF) );
::WritePrivateProfileString("Login", "ip1", ip1, szIniPath);
::WritePrivateProfileString("Login", "ip2", ip2, szIniPath);
::WritePrivateProfileString("Login", "ip3", ip3, szIniPath);
::WritePrivateProfileString("Login", "ip4", ip4, szIniPath);
CString port;
port.Format(_T("%d"),work.nHostPort);
::WritePrivateProfileString("Login", "port", port, szIniPath);
CString type;
type.Format(_T("%d"),(int)work.type);
::WritePrivateProfileString("Login", "worktype", type, szIniPath);
::WritePrivateProfileString("Login", "site", work.szSite, szIniPath);
::WritePrivateProfileString("Login", "user", work.szUser, szIniPath);
}
void CAamsProtocol::ReadConfig()
{
TCHAR tcExePath[MAX_PATH] = {0};
::GetModuleFileName(NULL, tcExePath, MAX_PATH);
// 設定ini路徑到exe同一目錄下
#ifndef CONFIG_FILE
#define CONFIG_FILE (TEXT("Config.ini"))
#endif
//_tcsrchr() 反向搜尋獲得最後一個'\\'的位置,並返回該位置的指標
TCHAR *pFind = _tcsrchr(tcExePath, '\\');
if (pFind == NULL)
{
return;
}
*pFind = '\0';
CString szIniPath = tcExePath;
szIniPath += "\\";
szIniPath += CONFIG_FILE;
if (!::PathFileExists(szIniPath))
{
AfxMessageBox(_T("配置檔案不存在!"));
return;
}
int ip1 = ::GetPrivateProfileInt("Login", "ip1", 192, szIniPath);
int ip2 = ::GetPrivateProfileInt("Login", "ip2", 168, szIniPath);
int ip3 = ::GetPrivateProfileInt("Login", "ip3", 1, szIniPath);
int ip4 = ::GetPrivateProfileInt("Login", "ip4", 42, szIniPath);
work.nSocketAddress = ((ip1<<24) & 0xFF000000)+((ip2<<16) & 0x00FF0000)+((ip3<<8) & 0x0000FF00)+(ip4 & 0x000000FF);
work.nHostPort = ::GetPrivateProfileInt("Login", "port", 6000, szIniPath);
work.type = (EWorkType)::GetPrivateProfileInt("Login", "worktype", 0, szIniPath);
::GetPrivateProfileString("Login", "site", "1", work.szSite, MAX_PATH, szIniPath);
::GetPrivateProfileString("Login", "user", "admin", work.szUser, MAX_PATH, szIniPath);
::GetPrivateProfileString("Login", "password", "admin", work.szPassword, MAX_PATH, szIniPath);
}