![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
А вот хотелось бы поблагодарить неизвестного программиста обслуживаемой нами программы за то, что он вывел код ошибки API в MessageBox при ошибке работы с принтером. Без этого кода хрен бы я понял, что надо сократить название сетевого принтера, чтобы прога могла на него печатать.
Это, вообще, нетривиальная вещь. Можно просто показывать сообщение "Произошла ошибка"(плохо). Можно параллельно с этим выводить кучу инфы в лог(наверно, наиболее правильно - не пугает обычных пользователей техническими подробностями и дает возможность разобраться специалистам) или показывать ошибку целиком (не совсем хорошо, но иногда имеет смысл - особенно если сделать окно с кнопкой вроде "Информация" для подробного описания ошибки и кнопкой "Отослать разработчику отчет" :))
Это, вообще, нетривиальная вещь. Можно просто показывать сообщение "Произошла ошибка"(плохо). Можно параллельно с этим выводить кучу инфы в лог(наверно, наиболее правильно - не пугает обычных пользователей техническими подробностями и дает возможность разобраться специалистам) или показывать ошибку целиком (не совсем хорошо, но иногда имеет смысл - особенно если сделать окно с кнопкой вроде "Информация" для подробного описания ошибки и кнопкой "Отослать разработчику отчет" :))
no subject
Date: 2013-09-10 05:09 am (UTC)DWord error_code = GetLastError();
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error_code,
MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf, 0, NULL);
err_str = (LPTSTR)lpMsgBuf;
// Вывод в лог: OpenPrinter + описание ошибки error_code.
Memo1->Lines->Add(L"OpenPrinter() ERROR: " + err_str);