在c++Builder2010中字符串提取char的有关问题

在c++Builder2010中字符串提取char的问题
在BCB6中,下面两行代码运行正常:
  char str = Memo1->Text[2];
  Memo1->Text = Memo1->Text + str;
但在2010中,Text不再是char型,改成了wchar_t型,
运行上面的代码就出错并跳到:
  wchar_t& __fastcall operator [](const int idx)
  {
  ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead ??
  Unique(); // Ensure we're not ref-counted (and Unicode)
  return Data[idx-1];
  }
跳到了ThrowIfOutOfRange(idx);这一行,下标超范围了?没吧。。。
高手指点迷津~~~~

顺带问下:Memo1->Lines->Text 与Memo1->Text有什么区别啊?感觉貌似差不多

------解决方案--------------------
Memo1->Lines->Text 与Memo1->Text

Memo1->Lines->Text 文本行数对应的字符串
Memo1->Text 文本的全部字符串

Memo1->Lines[0]->Text Memo1->Text[0]一样
 
------解决方案--------------------
你得memo1里面可以肯定少于2个字符,呵呵,运行肯定出错了
------解决方案--------------------
String对象的下标是从1开始的,这个需要注意。
------解决方案--------------------
如果Memo中此时的字符串是"Memo3",那么Memo3->Lines->Text[2]应该是返回字符:"e",就这个字母来说,代给一个char变量,虽然也能显示出"e"来,但是由于丢失一个字节,会有风险的。

至于你说的产生下标越界的错误,这个不太应该啊,检查一下你的代码中是否有将Memo清空的地方,导致Memo3->Lines->Text.Length()小于2了?