Форум программистов, компьютерный форум CyberForum.ru

И снова работа со строками - C++

Восстановить пароль Регистрация
 
takhvatulin
10 / 10 / 0
Регистрация: 04.04.2014
Сообщений: 140
27.06.2014, 18:13     И снова работа со строками #1
Всем привет!
У меня есть поле ввода и кнопка. Если поле не заполненное, то по нажатию кнопку вылезет сообщение "M", если в поле что то записано - сообщение "N". Очень важно для меня, чтобы строчка была TCHAR, никакие другие строчки мне использовать нельзя.
C++
1
2
3
4
5
6
7
8
TCHAR str[20];
GetDlgItemText(ID_EDIT, str, 10)
if(str == /*пустой строке*/)
{
   MessageBox(_T("Поле пустое"));
}
else
   MessageBox(_T("Поле заполнено));
Вот так программа выглядит. Вот как мне понять пустая ли моя, повторюсь TCHAR строка???
P.S. облазил ваш форум, и не только, не нашел примера с TCHAR'ом, везде примеры со string'ами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.06.2014, 18:30     И снова работа со строками #2
Цитата Сообщение от takhvatulin Посмотреть сообщение
Вот так программа выглядит. Вот как мне понять пустая ли моя, повторюсь TCHAR строка???
Нет такой "строчки TCHAR". Сидишь, наверное, на поделии от MS, пишешь разную фигню. Подозреваю, что это дефайн, который меняет свое значение в зависимости от выбранной опции в проекте- char для ANSI, whar_t для Unicode. Вот нужную тебе функцию и бери: strcmp, strncmp - char, wcscmp, wcsncmp - wchar_t.
_tcsncmp чтобы не выбирать.
Должно работать, проверить не могу.
zss
Модератор
Эксперт С++
 Аватар для zss
6054 / 5657 / 1828
Регистрация: 18.12.2011
Сообщений: 14,448
Завершенные тесты: 1
27.06.2014, 18:32     И снова работа со строками #3
В справочнике MS нашел, что аналог strlen для _TCHAR это _tcsclen.
А просто if(str[0]==0) написать нельзя?
takhvatulin
10 / 10 / 0
Регистрация: 04.04.2014
Сообщений: 140
27.06.2014, 18:35  [ТС]     И снова работа со строками #4
Vourhey,
Цитата Сообщение от Vourhey Посмотреть сообщение
Подозреваю, что это дефайн
C++
1
typedef WCHAR TCHAR, *PTCHAR;
Цитата Сообщение от Vourhey Посмотреть сообщение
пишешь разную фигню.
На счет фигни ты не прав, устроился на работу стажером, учусь программировать, и я не считаю что заниматься этим в 20 лет совмещая с учебой это фигня!!

Добавлено через 57 секунд
zss,
только что нашел такой выход:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
TCHAR STR1[10];
    TCHAR str1[5];
    TCHAR STR2[10];
    TCHAR str2[5];
    TCHAR STR3[10];
    TCHAR str3[5];
    
    GetDlgItemText(IDC_EDIT1, STR1, 4);
    CString st1(STR1);
    GetDlgItemText(IDC_EDIT2, STR2, 4);
    CString st2(STR2);
    GetDlgItemText(IDC_EDIT3, STR3, 4);
    CString st3(STR3);
    CString ST("");
 
    GetDlgItemText(IDC_EDIT1, str1, 4);
    GetDlgItemText(IDC_EDIT2, str2, 4);
    GetDlgItemText(IDC_EDIT3, str3, 4);
 
    int h;
    int m;
    int s;
    
    h = _wtoi(str1);
    m = _wtoi(str2);
    s = _wtoi(str3);
    
    if(h >=24 | m >=60 | s >=60 | st1 == ST | st2 == ST | st3 == ST)
    {
        MessageBox(_T("Неверно установлено время или не все поля заполнены"));
    }
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.06.2014, 18:39     И снова работа со строками #5
Ммм, ну да, солюшн, что надо - объекты создавать.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от takhvatulin Посмотреть сообщение
На счет фигни ты не прав, устроился на работу стажером, учусь программировать, и я не считаю что заниматься этим в 20 лет совмещая с учебой это фигня!!
Какой молодец...

zss
Модератор
Эксперт С++
 Аватар для zss
6054 / 5657 / 1828
Регистрация: 18.12.2011
Сообщений: 14,448
Завершенные тесты: 1
27.06.2014, 18:39     И снова работа со строками #6
Цитата Сообщение от takhvatulin Посмотреть сообщение
GetDlgItemText(IDC_EDIT1, str1, 4);
Проще int h=GetDlgItemInt(IDC_EDIT1,NULL, true);
takhvatulin
10 / 10 / 0
Регистрация: 04.04.2014
Сообщений: 140
27.06.2014, 18:44  [ТС]     И снова работа со строками #7
Цитата Сообщение от zss Посмотреть сообщение
Проще int h=GetDlgItemInt(IDC_EDIT1,NULL, true);
Если писать так, то можно без преобразования получать число из эдита?

Добавлено через 1 минуту
А допустим могу ли я в эдит также заносить
C++
1
GetDlgItem(ID_EDIT)->SetDlgItemInt(100500)
zss
Модератор
Эксперт С++
 Аватар для zss
6054 / 5657 / 1828
Регистрация: 18.12.2011
Сообщений: 14,448
Завершенные тесты: 1
27.06.2014, 19:34     И снова работа со строками #8
Наверное так:
C++
1
GetDlgItem(ID_EDIT)->SetDlgItemInt(ID_EDIT,100500,true);
Соответствующая WinApi Функция SetDlgItemInt(hwnd,ID_EDIT,100500,true);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 20:07     И снова работа со строками
Еще ссылки по теме:

Работа со строками в c++ C++
C++ Работа со строками
Работа со строками C++
C++ Работа со строками

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Voivoid
 Аватар для Voivoid
585 / 261 / 12
Регистрация: 31.03.2013
Сообщений: 1,314
27.06.2014, 20:07     И снова работа со строками #9
TCHAR не нужен, используй только юникод ( wchar_t ).
напиши функцию которая принимает hwnd ( или id контрола ) и возвращает std::wstring
Yandex
Объявления
27.06.2014, 20:07     И снова работа со строками
Ответ Создать тему
Опции темы

Текущее время: 06:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru