Ponieważ używasz środowiska C++Builder 2010 to typem domyślnym nie jest już AnsiString lecz UnicodeString, a to wymaga zastosowania innych operatorów konwersji. Opisałem to szczegółowo w tym poście:
http://www.programowanie.cal.pl/forum/viewtopic.php?f=16&t=1098&p=7401p7401Co się tyczy problemu to występuje on tutaj:
We wcześniejszych wersjach można chyba było traktować ciąg znaków typu AnsiSting jak tablicę, ale w nowszych wersjach środowiska to się już zmieniło, tablica musi być jasno zdefiniowana.
Twój kod powinien wyglądać tak:
if(LabeledEdit1->Text.Pos(".") > 0)
{
int i = LabeledEdit1->Text.Pos(".");
LabeledEdit1->Text = LabeledEdit1->Text.Delete(i, 1);
LabeledEdit1->Text = LabeledEdit1->Text.Insert(",", i);
}
Istnieje jednak prostsza metoda:
LabeledEdit1->Text = StringReplace(LabeledEdit1->Text, ".", ",", TReplaceFlags() << rfReplaceAll);
Funkcja
StringReplace zamieni wszystkie wystąpienia jednego znaku na inny.
Co się tyczy odpowiedzi
Corvis'a to w ten sposób unikniesz tylko komunikatu błędu i nic poza tym. Właściwość
Text jest typu
UnicodeString a nie
char, czy
wchar_t więc to nie zadziała.