Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 230
от 31.10.2005, 14:09

Администратор:Калашников О.А.
В рассылке:Подписчиков: 229, Экспертов: 30
В номере:Вопросов: 2, Ответов: 6


Вопрос № 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] = '
Отправлен: 26.10.2005, 02:50
Вопрос задал: Дмитриев Александр Валериевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: __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

Отвечает: Raptor1
Здравствуйте, Rewer8!
Попробуй поменять местами, т.е. написать " "
Ответ отправил: Raptor1 (статус: 8-ой класс)
Отправлен: 28.10.2005, 23:42


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное