Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Строки и их вывод в TEdit

16K
15 ноября 2006 года
Rize
16 / / 05.09.2006
Разбираясь в одной проблеме столкнулся со следующим:

Код:
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";
}

Два обработчика нажатия кнопок практически идентичны, во втором только добавлено объявление строковой переменной.

Вот собственно и вопрос: почему объявление дополнительной строковой переменной меняет строку выводимую в Edit2? В конце ожидаемой строки "Kak xorosha nasha savanna" добавляется абракадабра - "Kak xorosha nasha savanna$I"
9.5K
15 ноября 2006 года
ROLpogo
80 / / 22.08.2006
Код:
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";
}


Строка описанная массивом char'ов, должна заканчиваться нуль символом '\0'.

перед:
Edit2->Text = Sd;
вставь:
Sd[Phrase.Length()] = '\0';
и будет тебе счастье! :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог