Консультация № 28323
26.10.2005, 12:08
0.00 руб.
0 5 4
В вопросе № 28273 я спросил есть ли в С++ какие-нибудь функции перехода на новую строку, перевода каретки?
Я понял что есть функции /n-переход на новую строку
/r-перевод каретки и вместе они дают новую строку
Но когда я пишу код:
AnsiString str="текст ";
str=str+"\r\n"+"текст2"
StringGrid1->Cells[0][0]=str;
То в результате его выполнения
получается какая то фигня типа "текст||текст2"
а мне нужно чтобы текст2 был записан под текст,
то есть
"текст"
"текст2" Это как нибудь можно реализовать

Обсуждение

Неизвестный
26.10.2005, 13:02
общий
это ответ
Здравствуйте, Rewer8!
\n и \r это не функции, а ESC-последовательности. Новую строку дает \n, а не вместе, т.е.
str = str + ‘\n‘ + "текст2"
Неизвестный
26.10.2005, 19:07
общий
это ответ
Здравствуйте, Rewer8!
Я так понял вы пытаетесь сцепить несколько строк в одну.
Это делается не так, есть библиотека работы со строками string.h.
Так вот ф-ция strcat(char*,const char*), она то и выполняет сцепление строк.
Первый параметры строка к которой цеплять, второй параметр строка которую цеплять.

так вот следующий код:str=str+"\r\n"+"текст2" должен выглядеть следующим образом
char str[40];
strcpy(str,"Text")//Копирование строки Text в массив
strcat(str,"\r\n");//Сцепление строк
strcat(str,"text2");
Используемые вами ф-ции для вывода, должны поддерживать работу с управляющими символами, т.е \n \t и т.д.
давно
Специалист
399094
201
27.10.2005, 13:21
общий
Я не пытаюсь сцепить несколько строк в одну. Я пытаюсь сделать так,чтобы в заголовке столбца StringGrid1->Cells[0][0]=str, переменная strне писалась в одну строку (Например, после выполнения кодаAnsiString str="текст1";str = str + ‘\n‘ + "текст2"; StringGrid1->Cells[0][0]=str; В самой верхней левой ячейке(заголовке нулевого столбца StringGrid1) выводится следующее: текст1|текст2А я пытаюсь, чтобы выводилось так: текст1 текст2Тоесть чтобы в этой ячейке выполнялся переход на новую строку, тоесть сначала текст1, а под ним(на новой строке) текст2У меня никак это не получается Не знаю возможно ли это сделать
Неизвестный
28.10.2005, 23:14
общий
это ответ
Здравствуйте, Rewer8!
Очень похоже на то, что не получится у тебя всунуть две строки так просто :)
Судя по названию, StringGrid - это сетка строк :). В VS это называется ListControl (наподобие сетки в Excel, я прав?).
Если у тебя на месте \r\n в сроке непонятные квадратики или еще чего - значит контрол не поддерживает две строки текста в одной. Выход - отрисовывать сетку самому, наверняка контрол поддерживает это. Тогда можно творить что угодно - нужно будет увеличить высоту строки в сетке и врисовывать в нее строки... хоть анимированные картинки. В VS это не совсем легко, но и не очень сложно. Правда, слышал, в Builder‘е ownerdraw-элементы не так уж и легко делать :)
А если элемент не поддерживает свою отрисовку и сильно хочется - создавай контрол вручную, сам. Еще больше геморроя :)
Неизвестный
28.10.2005, 23:42
общий
это ответ
Здравствуйте, Rewer8!
Попробуй поменять местами, т.е. написать "\n\r"
Форма ответа