Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Нужна помощь в работе со строкой


Автор: Тутанхамец 25.9.2006, 07:50
Здравствуйте! Срочно нужна помощь вот в таком непростом деле:

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

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

Код

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


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

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

UpdateData(0);
UpdateData(1);

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

Автор: Earnest 25.9.2006, 08:01
CString str;
Edit.GetWindowText(str);
str = /*что-то делаешь*/
Edit.SetWindowText (str);

Автор: Тутанхамец 25.9.2006, 08:09
Да, прошу прощения, забыл сказать - речь идет действительно о 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 



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

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

Автор: zkv 25.9.2006, 10:20
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);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)