Я получаю «Исключение первого шанса в 0x03f7111c в CEDel.exe: 0xC0000005: Место записи нарушения прав доступа 0x002e0364». ошибка при запуске моего кода. В настоящее время я работаю в режиме отладки и работаю на реальном устройстве Win Mobile CE 6.5.3, которое подключено к моему компьютеру. Вершина стека (это не дизассемблирование) указывает на оператор if, и я не уверен, что является причиной ошибки. Проект был создан в MS eMbedded C ++ несколько лет назад, и я портирую его на MS Visual Studio 2008.
Код
CDeviceFuncCursor& curs = tempDeviceFunc.GetCursor();// added for debug checks
if (((wcscmp(_wcsupr(tempDeviceFunc.GetCursor().m_szSection), _wcsupr(INI_SERVERS_SECTION)) == 0) && //INI_SERVERS_SECTION == _T("Servers")
((wcscmp(_wcsupr(tempDeviceFunc.GetCursor().m_szVariable), _wcsupr(FTP_PRIMARY)) == 0) || //FTP_PRIMARY == _T("Primary")
* (wcscmp(_wcsupr(tempDeviceFunc.GetCursor().m_szVariable), _wcsupr(SERVER_PORT)) == 0)))) //SERVER_PORT == _T("SERVERPORT")
{
CString csValue = tempDeviceFunc.GetCursor().m_szValue;
csValue = EncryptData(csValue.GetBuffer(csValue.GetLength()));
WriteProfileString(tempDeviceFunc.GetCursor().m_szSection, tempDeviceFunc.GetCursor().m_szVariable, csValue.GetBuffer(csValue.GetLength()+1));
}
Строка с * — это та, на которую указывает стек.
в точке останова: curs.m_szSection = «APPLICATIONCONTROL», curs.m_szVariable = «AppLanguage», curs.m_szValue == «0»
Я не уверен, где искать ошибку,
Я думаю, у вас есть макрос
#define SERVER_PORT _T("SERVERPORT")
в таком случае _T("SERVERPORT")
это константный массив
Вы не можете изменять его (_wcsupr
изменяет свой аргумент на месте).
Замените макрос на переменную:
TCHAR SERVER_PORT[] = _T("SERVERPORT");
Других решений пока нет …