C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1007] Windows의 에러 코드를 에러 메시지로 확인해 보기.
김태선 [cppbuilder] 9202 읽음    2010-07-30 21:42
보통 윈도우 에러 코드는 GetLastError() 함수로
그 에러 코드를 확인할 수 있습니다.
그러면 WinError.h 파일에서 그 코드를 찾아 어떤 에러인지 찾아 볼수 있습니다.
하지만 그것보다는 아래처럼 윈도우의 에러 코드를 메시지로 확인할 수 있는 함수를 쓰는게 더 낫습니다.
메시지도 한글로 볼수 있습니다.

디버깅을 위해 보편적으로 많이 쓰는 코드인데, 안 보여서 제가 쓰는 버전을 올려 둡니다.
String GetLastErrorMsg(); 는 GetLastError() 에 대한 에러메시지를 돌려주고
String GetWindowsErrorMsg(DWORD ErrorNo); 는 지정한 에러 코드에 대해 해당하는 메시지를 돌려줍니다.

이 두 함수를 활용하면 GetLastError() 코드 값이나 WinError.h 파일을 확인하는 일이 덜어지겠죠.

//---------------------------------------------------------------------------
// 디버깅용 에러 메시지 확인.

String GetLastErrorMsg()
{
   void *MsgBuf;
   if ( !FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		GetLastError(),
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPTSTR) &MsgBuf,
		0,
		NULL) )
   {
	   return "";
   }
   String msg = (char *)MsgBuf;
   LocalFree(MsgBuf);
   return msg;
}

String GetWindowsErrorMsg(DWORD ErrorNo)
{
   void *MsgBuf;
   if ( !FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		ErrorNo,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPTSTR) &MsgBuf,
		0,
		NULL) )
   {
	   return "";
   }
   String msg = (char *)MsgBuf;
   LocalFree(MsgBuf);
   return msg;
}
//---------------------------------------------------------------------------



그럼.

+ -

관련 글 리스트
1007 Windows의 에러 코드를 에러 메시지로 확인해 보기. 김태선 9202 2010/07/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.