0

TLabelヘルプ メッセージを作成し、そのテキスト プロパティをそのヘルプ メッセージに設定するメソッドがあります。ただし、ラベルのテキストを設定しようとすると、次の例外が発生します。

'String index out of range. (-1) Must be >=0 and <=42'

方法は次のとおりです。

void __fastcall TPasswordChangeForm::BuildHelpMessage()
{
    String HelpMsg = "";

    if( NewPassEdit->Text.Length() < MinPasswordLength )
    {
        HelpMsg += "Password length too short.";
    }
    else
    {
        HelpMsg += "Password length OK.";
    }

    HelpMsg += "\n";

    if( NewPassEdit->Text == ConfirmPassEdit->Text )
    {
        HelpMsg += "Passwords match.";
    }
    else
    {
        HelpMsg += "Passwords do not match.";
    }

    ShowMessage( HelpMsg ); //added for debugging, shows string as expected

    HelpLabel->Text = HelpMsg;  //exception thrown here
}

ShowMessage文字列の値を確認するためだけに呼び出しを追加しました。ちゃんと映ります。次のような任意の値にラベルを設定することもできます。

HelpLabel->Text = "This message works!";

HelpMsg文字列 を作成するときに何か間違ったことをしていますか?

編集:文字列に \n を追加する行をコメントアウトすると、問題が解決します。同様に、次のコードは例外を引き起こします。

String test = "this is a test";
test += "\n";
test += "test 2";

HelpLabel->Text = test;

\n が問題を引き起こす原因は何ですか? 新しい行を正しく追加するにはどうすればよいですか?

4

1 に答える 1