0

アプリの編集コントロールを使用して入力された数値の有効性を確認するために、次のコードを含むこの MFC アプリがあります。文字列として検証されます。

bool invalid = FALSE;
int string_length = InputEdit.GetWindowText(text, 10);
if (text[0] == '-1')
    for(i=1; i<string_length; i++)
        if((text[i] < '0' || text[i] > '9' ) && text[i] != '.'){
            MessageBeep(MB_ICONEXCLAMATION);
            Reactive_Const_Status_Text.SetWindowText("Invalid AA Value");
            invalid = TRUE;
        }
else
    for(i=0; i<string_length; i++)
        if((text[i] < '0' || text[i] > '9' ) && text[i] != '.'){
            MessageBeep(MB_ICONEXCLAMATION);
            Reactive_Const_Status_Text.SetWindowText("Invalid AA Value");
            invalid = TRUE;
        }

if(!invalid){   
    double temp_value = atof(text);
    reac.VelAA  = temp_value;
}

したがって、この編集コントロールにより、ユーザーは負の数を入力できます。ただし、この行「if (text[0] == '-1')」がコードで何をするかについて、誰かが光を当てることができますか? 負の数をチェックしていますか?もしそうなら、なぜ '-1' を使用するのですか? 第二に、このコードを C# に変換したいのですが、どうすればこの行を変換できますか?

前もって感謝します

4

1 に答える 1

1

実際、このコードは負の数もチェックしています。最初の for ループは 2 桁目以降をチェックします。

行 if (text[0] == '-1') は if (text[0] == '-') であるはずです

C++ では、一重引用符は単一の文字にのみ使用でき、複数の文字を含む文字列には使用できないため、このように推測しました。

C# では、同じ行 if (text[0] == '-') が機能します。

ありがとう。

于 2012-04-23T08:32:17.550 に答える