void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Phrase = "Kak xorosha nasha savanna";
char Sd[256];
for (int i = 0; i < Phrase.Length(); i++)
{
Sd = Phrase[i+1];
}
Edit1->Text = Sd;
}
//------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
String Phrase = "Kak xorosha nasha savanna";
char Sd[256];
for (int i = 0; i < Phrase.Length(); i++)
{
Sd = Phrase[i+1];
}
Edit2->Text = Sd;
String SS = "mama mia";
}
Строки и их вывод в TEdit
Код:
Два обработчика нажатия кнопок практически идентичны, во втором только добавлено объявление строковой переменной.
Вот собственно и вопрос: почему объявление дополнительной строковой переменной меняет строку выводимую в Edit2? В конце ожидаемой строки "Kak xorosha nasha savanna" добавляется абракадабра - "Kak xorosha nasha savanna$I"
Код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
String Phrase = "Kak xorosha nasha savanna";
char Sd[256];
for (int i = 0; i < Phrase.Length(); i++)
{
Sd = Phrase[i+1];
}
Edit2->Text = Sd;
String SS = "mama mia";
}
{
String Phrase = "Kak xorosha nasha savanna";
char Sd[256];
for (int i = 0; i < Phrase.Length(); i++)
{
Sd = Phrase[i+1];
}
Edit2->Text = Sd;
String SS = "mama mia";
}
Строка описанная массивом char'ов, должна заканчиваться нуль символом '\0'.
перед:
Edit2->Text = Sd;
вставь:
Sd[Phrase.Length()] = '\0';
и будет тебе счастье! :)