RegOpenKeyEx()
関数が失敗したか成功したかによって、printf("Success") または printf("Failure") を使用したい
きちんと読みやすく保ちながら、このような条件をどのように行うのでしょうか?
私はこれから離れたいと思っています:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) != 0 )
{
//CODE
}
RegOpenKeyEx()
関数が失敗したか成功したかによって、printf("Success") または printf("Failure") を使用したい
きちんと読みやすく保ちながら、このような条件をどのように行うのでしょうか?
私はこれから離れたいと思っています:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) != 0 )
{
//CODE
}
失敗した理由を確認する方法を尋ねていますか?
「Winerror.h で定義されたゼロ以外のエラー コードは失敗を示します。エラーの一般的な説明を取得するには、FORMAT_MESSAGE_FROM_SYSTEM フラグを設定して FormatMessage を呼び出します。」
だから..成功した場合はERROR_SUCCESS、失敗した場合はエラーコード。
改行を使用するか、名前を付けるか、またはその両方を行うことができます。
LONG result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"HUGE LONG KYEY STRUCTURE HERE",
0,KEY_SET_VALUE);
if(result != 0 ) {
...
多分
LPCTSTR keypath = "HUGE LONG KYEY STRUCTURE HERE";
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE,keypath,0,KEY_SET_VALUE) != 0 ) {
...
編集されていない質問を確認した後、できることは、ステートメントを次のように複数のステートメントに分割することだけだと思います。
const char* regKey = "BIG_STRING......";
DWORD errorCode = RegOpenKeyEx(...);
if(ERROR_SUCCESS == errorCode)
{
//Rest of the code
}
else
{
//Error handling
}
代わりに、三項演算子を使用できます。
bool success = (RegKeyOpenEx(...) == ERROR_SUCCESS);
printf("%s\n", success ? "Success" : "Failure");
成功しなかった場合、ERROR_SUCCESS は返されません。そうですか?
エラーコードを複数回チェックするには、次を使用します。
LONG errors = 0;
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
if( errors > 0 )
{
print( "OMG It went wrong!\n" );
}
else
{
print( "Hero!\n" );
}