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 が問題を引き起こす原因は何ですか? 新しい行を正しく追加するにはどうすればよいですか?