Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь в работе со строкой 
V
    Опции темы
Тутанхамец
Дата 25.9.2006, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Здравствуйте! Срочно нужна помощь вот в таком непростом деле:

1) Взять строку из переменной класса CEdit;
2) Прибавить к этой строке справа символ, допустим, "a";
3) Запихнуть результат обратно в CEdit.

И хорошо бы это оформить в виде функции, которая принимала бы прибавляемый символ. То бишь мне нужен аналог бейсиковского:

Код

public sub (c as string) 
Edit1.text=Edit1.text+c
end sub


Догадываюсь, что вопрос идиотский, но рассчитываю на ваше милосердие. smile А то время поджимает. smile После бейсика строки в С++ как-то шокируют. 

PM MAIL   Вверх
Alexeis
Дата 25.9.2006, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Тутанхамец, наверное речь идет все таки о Visual C++, там для связи с компонентой необходимо создать строковую переменную для данной компоненты. А запись и чтение данных в нее производится функцией 
Код

UpdateData(0);
UpdateData(1);

В зависимости от направления передачи.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Earnest
Дата 25.9.2006, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



CString str;
Edit.GetWindowText(str);
str = /*что-то делаешь*/
Edit.SetWindowText (str);


--------------------
...
PM   Вверх
Тутанхамец
Дата 25.9.2006, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Да, прошу прощения, забыл сказать - речь идет действительно о VC++.

Не знаю, что за UpdateData, но по-моему она здесь не причем. Извлекать текст из Edit предполагаю с помощью GetWindowText, а записывать - SetWindowText. Трабл в том, что я ни фига не знаю о работе со строками в VC++ 6.0. 

Вот что получается:
Код

void CCalcDlg::OnButton9() 
{
    
int i=m_Edit.GetWindowTextLength();

char *existing;

existing=(char *)malloc(sizeof(char)*(i+2));

m_Edit.GetWindowText(existing,i);
strcat(existing,"x");
m_Edit.SetWindowText(existing);

free(existing);

}



Но в эдит он лепит не "х", а какие-то случайные символы.  smile

Добавлено @ 08:12 
Ой, Earnest, бальшой пасип! smile Поспешил ответить alexeis'у и не заметил твой мессаг. Это то, что нужно. smile 



PM MAIL   Вверх
Alexeis
Дата 25.9.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(Тутанхамец @  25.9.2006,  08:09 Найти цитируемый пост)
Не знаю, что за UpdateData

Это стандартная процедура обмена данными с диалогом MFC. Позволяет передовать данные в переменные из контролов и обратно. Фокус в том, что для элементарной работы, такой как считать или записать текст в MFC не обязательно создавать объект класса CEdit, можно толко виндовый контрол. Тогда UpdateData() довольно удобное средство, но можно конечно юзать и Апи.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
zkv
Дата 25.9.2006, 10:20 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



c CString работать удобнее:
void CCalcDlg::OnButton9() 
{
    
//int i=m_Edit.GetWindowTextLength();
//char *existing;
CString existing;
//existing=(char *)malloc(sizeof(char)*(i+2));
m_Edit.GetWindowText(existing,i);
//strcat(existing,"x");
existing += "x";
m_Edit.SetWindowText(existing);
//free(existing);
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1130 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.