Вопрос № 28312: Уважаемые эксперты. Как в C++Builder содержимое Edit'а загнать в массив символов.
Например: у меня есть TEdit *Edit1; и char mas[10]; Edit1->Text = "123";
Нужно чтобы:
mas[0] = '1';
mas[0] = '2';
mas[0] = '3';
ma...Вопрос № 28323: В вопросе № 28273 я спросил есть ли в С++ какие-нибудь функции перехода на новую строку, перевода каретки?
Я понял что есть функции /n-переход на новую строку
/r-перевод каретки и вместе они дают новую строку
Но когда я пишу код:
Ans...
Вопрос № 28.312
Уважаемые эксперты. Как в C++Builder содержимое Edit'а загнать в массив символов.
Например: у меня есть TEdit *Edit1; и char mas[10]; Edit1->Text = "123";
Нужно чтобы:
mas[0] = '1';
mas[0] = '2';
mas[0] = '3';
mas[0] = '
Отвечает: __Cheat3r
Просто :
Edit1->Text - Это тип AnsiString
Знач берем и проверяем каждый символ..
//----------------------
char massive[256];//наедюсь эдит не будет длиннее 256ти символов?:))
for(int i=0;i<=Edit1->Text.Length();i++)
{
if(Edit1->Text.SubString(i,1)=="")//Если символ пуст то ставим " {
massive[i]=' }
massive[i]=Edit1->Text.SubString(i,1).c_str();
}
//----------------------
Ответ отправил: __Cheat3r (статус: 1-ый класс)
Отправлен: 26.10.2005, 06:12
Отвечает: Jadd
Здравствуйте, Дмитриев Александр Валериевич!
Перебрать в цикле все символы и записать в свой массив. Т.е.
char *mass = new char [Edit->GetTextLength()]; //выделим место в памяти для массива
for(int i=0; i < Edit->GetTextLength(); i++)
{
mass[i] = Edit->Text[i];
}
Примерно так. Не забудь потом память освободить.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 26.10.2005, 10:25
Вопрос № 28.323
В вопросе № 28273 я спросил есть ли в С++ какие-нибудь функции перехода на новую строку, перевода каретки?
Я понял что есть функции /n-переход на новую строку
/r-перевод каретки и вместе они дают новую строку
Но когда я пишу код:
AnsiString str="текст ";
str=str+"
"+"текст2"
StringGrid1->Cells[0][0]=str;
То в результате его выполнения
получается какая то фигня типа "текст||текст2"
а мне нужно чтобы текст2 был записан под текст,
то есть
"текст"
"текст2" Это как нибудь можно реализовать
Отправлен: 26.10.2005, 12:08
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: igor87
Здравствуйте, Rewer8!
и
это не функции, а ESC-последовательности. Новую строку дает
, а не вместе, т.е.
str = str + '
' + "текст2"
Ответ отправил: igor87 (статус: 4-ый класс)
Отправлен: 26.10.2005, 13:02
Отвечает: DoubleV
Здравствуйте, Rewer8!
Я так понял вы пытаетесь сцепить несколько строк в одну.
Это делается не так, есть библиотека работы со строками string.h.
Так вот ф-ция strcat(char*,const char*), она то и выполняет сцепление строк.
Первый параметры строка к которой цеплять, второй параметр строка которую цеплять.
так вот следующий код:str=str+"
"+"текст2" должен выглядеть следующим образом
char str[40];
strcpy(str,"Text")//Копирование строки Text в массив
strcat(str,"
");//Сцепление строк
strcat(str,"text2");
Используемые вами ф-ции для вывода, должны поддерживать работу с управляющими символами, т.е
и т.д.
Ответ отправил: DoubleV (статус: 1-ый класс)
Отправлен: 26.10.2005, 19:07
Отвечает: estiGi
Здравствуйте, Rewer8!
Очень похоже на то, что не получится у тебя всунуть две строки так просто :)
Судя по названию, StringGrid - это сетка строк :). В VS это называется ListControl (наподобие сетки в Excel, я прав?).
Если у тебя на месте
в сроке непонятные квадратики или еще чего - значит контрол не поддерживает две строки текста в одной. Выход - отрисовывать сетку самому, наверняка контрол поддерживает это. Тогда можно творить что угодно - нужно будет увеличить высоту строки в сетке и врисовывать в нее строки... хоть анимированные картинки. В VS это не совсем легко, но и не очень сложно. Правда, слышал, в Builder'е ownerdraw-элементы не так уж и легко делать :)
А если элемент не поддерживает свою отрисовку и сильно хочется - создавай контрол вручную, сам. Еще больше геморроя :)
Ответ отправил: estiGi (статус: 3-ий класс)
Отправлен: 28.10.2005, 23:14