LPTSTR lpBuffer = NULL;
DWORD nSize = 1024, nByte, nOrgByte, dwRet;
while(1) {
nByte = nSize * sizeof(TCHAR);
if (lpBuffer == NULL) {
lpBuffer = (LPTSTR)GlobalAlloc(GPTR, nByte);
if (lpBuffer == NULL) {
brak;
/* ERR */
}
} else {
LPTSTR lpBuffer2;
lpBuffer2 = (LPTSTR)GlobalAlloc(GPTR, nByte);
if (lpBuffer2 == NULL) {
GlobaleFree(lpBuffer);
lpBuffer = NULL;
break;
/* ERR */
}
nOrgByte = GlobalSize(lpBuffer);
if (nOrgByte > nByte) {
CopyMemory(lpBuffer2, lpBuffer, nByte);
} else {
CopyMemory(lpBuffer2, lpBuffer, nOrgByte);
}
GlobalFree(lpBuffer);
lpBuffer = lpBuffer2;
}
dwRet = GetPrivateProfileSectionNames(lpBuffer, nSize, lpFile);
if (dwRet == (nSize - 2)) {
nSize += 1024;
} else {
break;
}
}
:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+
DWORD nSize=1024, dwRe;
while(1) {
try {
lpBuffer = new TCHAR[nSize];
} catch (std:bad_alloc&) {
/*ERR*/
}
dwRe = GetPrivateProfileSectionNames(lpBuffer, nSize, lpFile);
if(dwRe < nSize - 2) {
break;
}
nSize += 1024;
delete[] lpBuffer;
}
:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+