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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AraxniD
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 7
#1

Опрос\динамическое ожидание при работе с консолью - C++

20.08.2012, 19:08. Просмотров 1052. Ответов 9
Метки нет (Все метки)

Помогите решить проблемку: есть программа на си++, вывод\ввод информации через консоль(win32) + так же внутри в цикле идет сохранение потока данных через другую функцию.
Данные сохраняются в текстовой файлик, ничего особенного, но надо как-то реализовать опрос пользователя, когда остановить сохранение данных, грубо говоря выйти из цикла дальше..
Как это можно сделать? Из-за "cin<<" весь цикл встает, думал сделать опрос раз в Н минут, но тоже слишком часто вводить "Нет" не очень..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 19:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Опрос\динамическое ожидание при работе с консолью (C++):

Убрать ожидание нажатия клавиши Enter при выводе - C++
Здравствуйте! Подскажите пожалуйста, вот у меня сейчас вывод есть как бы, но он выводит через ентер каждый товар, а мне надо чтоб сразу все...

Нарушение прав доступа при исполнении при работе с C# DLL - C++
Есть код на C++, который загружает длл и вызывает из нее метод. HMODULE hLib; hLib = LoadLibrary(L&quot;Support.NET.dll&quot;); int id = 0; ...

Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы - C++
В VS скомпилировал код #include &lt;iostream&gt; using namespace std; int main() { int a; cout&lt;&lt;&quot;Hallo&quot;; cin&gt;&gt;a; cout&lt;&lt;a; ...

Работа с консолью - C++
Можно ли работать с бд в конлоси. Если да то подкажите как поочерёдно лоставать из таблицы например 123 по значению Показывать его...

Работа с консолью - C++
Добрый день. Нужно, чтобы при выполнении программы в консоли автоматически выполнялась вот такая строка. Подскажите как реализовать.

Работа с консолью - C++
Есть консоль которая вызывается в DLL таким кодом AllocConsole();; 1) Как можно писать ней разноцветным шрифтом отдельные...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.08.2012, 19:17 #2
#многопоточность
0
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 728
20.08.2012, 19:17 #3
Цитата Сообщение от AraxniD Посмотреть сообщение
cin<<
what is this...?
если бы Вы выложили код, было бы проще советовать...
1
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.08.2012, 19:19 #4
То приложение, что вы хотите написать в консоли работать не будет. В данном случае необходимо использовать win32api, при этом создать два таймера при помощи SetTimer(...), один таймер будет в определенные моменты времени вытягивать из списка вопросы для пользователя и отображать их в консоли, а второй таймер будет проверять дан ли ответ на вопрос через заданное число секунд. Если нет, то вопрос будет отмечен в списке как неотвеченный. Другие функции программы могут тоже работать в фоновом режиме при помощи SetTimer(...), CreateThread(...).

Добавлено через 1 минуту
Действительно, вам нужен совет или программа? Если есть исходники, выкладывайте плиз.
1
AraxniD
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 7
20.08.2012, 19:28  [ТС] #5
Спасибо за ответы.
Вот основной цикл, уже после всех инициализаций и т.п.
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
    
        ofstream out("file.txt");
    while(1)
    {
        FT_Read(fthandle, RxBuffer, 1,  &BytesReseived);
        out<<RxBuffer[i];
        i++;
        if (i == 250)
        {
            cout<<"Выключить передачу? Y/N"<<endl;
            cin>>waitforenter;
            if (waitforenter == 'Y')
            {
                goto EXIT;
            }
            i = 0;
        }
    }
EXIT:
    out.close();
    FT_Close(fthandle);
    cout<<"Порт закрыт"<<endl;
    cin>>waitforenter;
    return 0;
Ну, как видно, сейчас я сделал абсолютно не пригодную вещь - после каждого 250 бита опрос пользователя..
С учетом того, что все это дело должно крутиться хотя бы пару часов..
А win32api к проекту под win32 нельзя подключить, да? Или это именно с консолью связано? Нужен графический интерфейс?
В принципе, я могу переехать на проект под CLR, например, если это поможет =\

p.s да "cin<<" это я.. дурак)
0
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 728
20.08.2012, 20:05 #6
нельзя изначально спросить у пользователя, сколько информации ему потребуется?
0
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.08.2012, 20:11 #7
Для создания потоков можно использовать std::thread, а для таймеров std::chrono. Они работают в консоли
2
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.08.2012, 20:29 #8
zitxbit, А можно узнать на кой нужен WinAPI в данном конкретном случае, если есть std::thread + boost?
0
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
20.08.2012, 23:55 #9
спррос времени у пользователя через определенное время можно организовать и с помощью функции time().Задаем переменную -счётчик1 и счётчик2, в начале программы загоняем в счётчик1 время, потом после каждого ввода информации загоняем в счётик2 значение time() - счётчик1;сравниваем с определенной величиной: если больше - спрашиваем у пользователя, меньше - ничего не делаем.

Потом значения счётчиков меняем.

Вроде должно работать.
1
AraxniD
0 / 0 / 0
Регистрация: 08.01.2010
Сообщений: 7
21.08.2012, 19:17  [ТС] #10
Цитата Сообщение от I.M. Посмотреть сообщение
Для создания потоков можно использовать std::thread, а для таймеров std::chrono. Они работают в консоли
Спасибо за наводку на std::thread, очень интересно и то, что нужно!
Правда интересно, а механизмов сканирования того, что уже написано в консоли, нет?
Ну там например, ввел бы пользователь в консоль какое-нибудь слово, а программа просто периодически сканировала бы..хм..уже написанное в консоли?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 19:17
Привет! Вот еще темы с ответами:

Проблемы с консолью в Codeblocks - C++
Все время писал на Pascal, но вот теперь решил учить C++. Начинал писать через DEVC++, через некоторое время решил поставить Codeblocks....

Работа с консолью в Dev C++ - C++
можно ли на фон консоли поставить картинку?если да то какой фукцией это можно сделать??

Распознавание русских букв консолью - C++
Доброго времени суток, форумчане! У меня такая проблема. Я бы хотел написать программу с паролем, которая при вводе верного продолжает...

Работа с консолью. Уменьшение нагрузки на ЦП - C++
Значит имеется следующий код: #include &lt;conio.h&gt; #include &lt;iostream&gt; int main() { bool bExit = false; while (!bExit) { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.08.2012, 19:17
Ответ Создать тему
Опции темы

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