16,467
社区成员
发帖
与我相关
我的任务
分享
TCHAR chBuffer[1024];
::GetPrivateProfileSectionNames(chBuffer, 1024, strUserFile);
while (1)
{//chBuffer中没一个SectionName都以NULL结束,最后一个以两个NULL结束
while ( chBuffer[nPos++] != NULL);
if (nPos == 1)
{
return; //有可能文件已经为空
}
count = nPos -1 - startpos;
// int len=_tcslen(chBuffer);
strName.Empty();
memcpy( strName.GetBuffer(count), (chBuffer + startpos), count );
strName.ReleaseBuffer();
strlist.AddTail(strName);
startpos = nPos;
if (chBuffer[nPos] == NULL)
break;
}
}
------------------------------------
m_listboxUser.AddString(str);
TCHAR chSectionNames[2048]={0}; //所有节名组成的字符数组
TCHAR *pSectionName; //保存找到的某个节名字符串的首地址
int i; //i指向数组chSectionNames的某个位置,从0开始,顺序后移
int j=0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量
int count=0; //统计节的个数
::GetPrivateProfileSectionNames(chSectionNames,2048,strUserFile);
for(i=0;i<2048;i++,j++)
{
if(chSectionNames[0]=='\0')
break; //如果第一个字符就是0,则说明ini中一个节也没有
if(chSectionNames[i]=='\0')
{
pSectionName = &chSectionNames[i-j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量,就是一个节名的首地址
j=-1; //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量赋成-1是因为节名字符串的最后一个字符0是终止符,
//把读出来的值加入listbox
if(chSectionNames[i+1]==0)
{
break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止
}
}
}
}