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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путаница в полученном из EditBox'а массиве. 
:(
    Опции темы
Игорь1024
Дата 13.8.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 11.5.2009
Где: Дальний Восток

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



В программе которую сейчас пишу в одной из форм нужно ввести время в формате ДД.ЧЧ.ММ.
Для этого создал ресурс .rc , в нём создал диалоговое окно.
В Main.cpp успешно запустил обработку окна при помощи DialogBox(...);
Для начала решил попробовать получить день месяца.
Код

HWND tar=GetDlgItem(hwnd, IDC_EDIT1);
int temp0,temp1,Day;
char Buffer[7];
...//здесь события на нажатие кнопки
Edit_GetText(tar,Buffer,7);
          temp0=atoi(&Buffer[0]);
          temp1=atoi(&Buffer[1]);
          Day=temp0*10+temp1;//здесь точка отсл.
...
 
Для начала тестировал переменные на корректность данных. temp0 не всегда корректно.
temp1 хранит корректное значение если за ней не следуют другие знаки.
Day вообще не получился "корректным".
Тестировал при помощи точек отслеживания(все переменные);
temp'ы при 1 проходе ==0;
Потом при введении нового значения появляется некой число (всегда разное), но при следующем нажатии значение корректно.
Если вводишь число большее длины буффера , то выводится полностью содержимое EditBox'а начиная с цифры temp'a.



Если вопрос глупый или непонятно обьяснил, то извините - спать сильно хочу и возможно поэтому голова не мыслит.
--------------------
The God is real,unless he is declared as integer.
PM MAIL   Вверх
xvr
Дата 13.8.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Игорь1024 @  13.8.2010,  15:59 Найти цитируемый пост)
          temp0=atoi(&Buffer[0]);
          temp1=atoi(&Buffer[1]);
Это неправильно. atoi получает на вход строку, а не указатель на отдельно стоящий символ.
Сделай так:
Код

char* p;
int day=strtol(Buffer,&p,10);
int month=strtol(p+1,&p,10);
int year=strtol(p+1,NULL,10);
ну и неплохо было бы в промежутках между strtol проверить *p на '.'


PM MAIL   Вверх
Игорь1024
Дата 14.8.2010, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 11.5.2009
Где: Дальний Восток

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



Спасибо за совет! Я , честно говоря, в стандартной бибилиотеке несилён. Сейчас с этой функцией разберусь и надеюсь что всё получиться.

Не совсем то, но тоже полезно. Выход нашёл - неудобный и некрасивый- в отдельные массивы извлекать дни, часы,минуты и потом приравнивать это к соотвествующим переменным при помощи atoi.


Это сообщение отредактировал(а) Игорь1024 - 14.8.2010, 05:38
--------------------
The God is real,unless he is declared as integer.
PM MAIL   Вверх
xvr
Дата 14.8.2010, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Игорь1024 @  14.8.2010,  01:40 Найти цитируемый пост)
Не совсем то, но тоже полезно.
Почему 'не совсем то'? По моему так 'совсем то'

Цитата(Игорь1024 @  14.8.2010,  01:40 Найти цитируемый пост)
Выход нашёл - неудобный и некрасивый-
Это не выход, это удаление гланд автогеном через задницу  smile 
Чем вариант с strtol не устраивает?

PM MAIL   Вверх
Игорь1024
Дата 17.8.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 11.5.2009
Где: Дальний Восток

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



ступил!!! smile  smile 
млин, там даже по точке можно ориентироваться!!!!

Вот я идиот...




Извините меня за мой глупый комментарий с "не совсем то..."!


Это сообщение отредактировал(а) Игорь1024 - 17.8.2010, 16:28
--------------------
The God is real,unless he is declared as integer.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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