【发布时间】:2015-08-31 20:14:30
【问题描述】:
我有一个方法可以构建帮助消息,然后将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 是什么?如何正确添加新行?
【问题讨论】:
-
尝试改用
"\r\n",甚至是RTL的sLineBreak常量。也许Text属性在 FireMonkey 中是平台敏感的。并非所有平台都使用"\n"换行。 -
\r\n 最终也能正常工作。谢谢!
标签: c++ firemonkey c++builder-xe8