VC 读INI文件

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:29:31
m_file_name = m_current_path + "log\\myset_path.ini";

int count_num = GetPrivateProfileInt("文件目录","count_num",0,m_file_name);
for(int i=0;i<count_num;i++)
{
tempkey.Format("file_path%d",i);
GetPrivateProfileString("文件目录",tempkey,NULL,temp.GetBuffer(128),128,m_file_name);
m_file_path.Format("%s",temp);
m_s_path = m_file_path.Left(m_file_path.Find("!"));
m_t_path = m_file_path.Right(strlen(m_file_path) - m_file_path.Find("!") - 1);
int nRow = 0;
CListCtrl* m_file_info = (CListCtrl*)GetDlgItem(IDC_LIST3);
nRow = m_file_info->InsertItem(i,m_s_path);
m_file_info->SetItemText(nRow,1,m_t_path);
}
这是我程序中的部份代码。
nRow = m_file_info->InsertItem(i,m_s_path);
m_file_info->SetItemText(nRow,1,m_t_path);
这两句是从INI文件中读取数据,然后更新到列表框中。
单步调试时数据正确。但实际运竺中第二句好像不起作用。请高手解答,谢谢。请详细些。

1、解决问题要紧

nRow = m_file_info->InsertItem(i,m_s_path);
m_file_info->SetItemText(nRow,1,m_t_path);
改为:
nRow = m_file_info->InsertItem(i,_T("") );
m_file_info->SetItemText(nRow,0,m_s_path);
m_file_info->SetItemText(nRow,1,m_t_path);
2、分析
InsertItem带两个参数,第一个指示插入的位置,即插入到在第几项,
插入项之后的原有项都将依次下移,你在程序中希望始终插入末尾吧,
所以用索引变量i;
第二个只是一个标签,英文名叫lable,不显示到表中,一般赋个空字符串。
想必你把这个当成某行的第一格显示了,第一格的显示必须这样实现:
m_file_info->SetItemText(nRow,0,m_s_path);

LZ好,使用下面的函数:
GetPrivateProfileString
GetPrivateProfileInt

我的INI文件名叫system.ini 内容

[Server]
ServerIP=10.38.163.11
Port=3002

char ipstr[20];//存储IP地址
GetPrivateProfileString("Server","ServerIP",NULL,ipstr,20,"d:\\test\\system.ini");
//第一个参数表示根节点,第二个参数表示子节点,第三个参数表示如果找不到,默认ipstr返回NULL,第四个参数存储返回结果,本例子ipstr就得到10.38.163.11的地址,第五个参数表示读的长度,最后一个参数是INI文件的路径和文件名