0
По какой-то причине я думаю, что мне это сложно.Чтение CByteArray из реестра
Это моя экономия код:
theApp.WriteProfileBinary(theApp.GetActiveScheduleSection(_T("Options")), _T("AssignStates"),
rAryByAssignStates.GetData(), sizeof(BYTE) * (UINT)iNumColumns);
Короткий и сладкий.
Это мое чтение код:
void COptionsDlg::ReadAssignStatesInfoEx(CByteArray& rbyAryAutoAssignStates)
{
UINT uSize;
LPBYTE ppData = NULL;
BYTE *pbyAssignStates = NULL;
theApp.GetProfileBinary(theApp.GetActiveScheduleSection(_T("Options")), _T("AssignStates"), &ppData, &uSize);
if (uSize > 0)
{
// In theory it should be safe to use this data
pbyAssignStates = new BYTE[uSize];
memcpy(pbyAssignStates, ppData, uSize);
rbyAryAutoAssignStates.SetSize(uSize);
for (UINT i = 0; i < uSize; i++)
rbyAryAutoAssignStates[i] = pbyAssignStates[i];
delete[] pbyAssignStates;
pbyAssignStates = NULL;
}
else
{
// It seems like the user has not yet displayed the Options window
RebuildAssignStatesInfoEx(rbyAryAutoAssignStates, true);
}
// Tidy memory
if (uSize != 0)
{
delete[] ppData;
ppData = NULL;
}
}
Он работает. Но я переусердствовал это?