Russian Qt Forum
Ноябрь 25, 2024, 16:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Командная строка в консоле  (Прочитано 7138 раз)
admsasha
Гость
« : Февраль 18, 2013, 03:09 »

Возможно это не совсем по Qt части, но и возможно это реализуется с  его помощью проще.

В некоторых консольных приложениях совместно с выводом логов, есть подобие командной строки. Как это реализуется ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 18, 2013, 03:15 »

если я правильно понял, то имеется в виду это:
Код
C++ (Qt)
do
{
   std::string command;
   std::cin >> command;
   ...
} while (command != "exit");
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
admsasha
Гость
« Ответ #2 : Февраль 18, 2013, 07:03 »

если я правильно понял, то имеется в виду это:
Код
C++ (Qt)
do
{
   std::string command;
   std::cin >> command;
   ...
} while (command != "exit");

sin будет ждать ввода сколько угодно времени. А лог должен идти не зависимо от этого. Например каждую секунду писать "Прошла 1 секунда"
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Февраль 18, 2013, 07:25 »

отдельный поток используй для лога или ожидания ввода
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
admsasha
Гость
« Ответ #4 : Февраль 18, 2013, 07:39 »

не решает проблему.
std::cout будет выводить строку на последнюю линию консольного окна, а не на предпоследнюю.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #5 : Февраль 18, 2013, 07:47 »

не решает проблему.
std::cout будет выводить строку на последнюю линию консольного окна, а не на предпоследнюю.
Хм. Тогда ручное позиционирование вывода текста лога. Вроде платформозависимые ф-ции использовать придется.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Disa
Гость
« Ответ #6 : Февраль 18, 2013, 09:57 »

Можно сделать виджет консоль в которую писать логи http://habrahabr.ru/post/122831/
Записан
admsasha
Гость
« Ответ #7 : Февраль 18, 2013, 10:34 »

Можно сделать виджет консоль в которую писать логи http://habrahabr.ru/post/122831/
Без X запустится ?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #8 : Февраль 18, 2013, 11:29 »

Без X запустится ?
Запустится, если скомпилить Qt с поддержкой вывода в фреймбуффер.
А еще можно глянуть на что-то типа ncurses.
Записан
cutwater
Гость
« Ответ #9 : Февраль 18, 2013, 14:00 »

libreadline не ?
Записан
admsasha
Гость
« Ответ #10 : Февраль 18, 2013, 16:47 »

Без X запустится ?
Запустится, если скомпилить Qt с поддержкой вывода в фреймбуффер.
А еще можно глянуть на что-то типа ncurses.
ncurses не подходит, т.к. он создает окно. Оно будет ограничивать вывод.
Записан
admsasha
Гость
« Ответ #11 : Февраль 18, 2013, 16:48 »

libreadline не ?
Это удобная штука для создания командной строки. Но поставленную задачу (совместить с одновременным выводом логов) не решает.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Февраль 18, 2013, 16:49 »

Почему "консоль"  мужского рода (консоле)? Или так правильно в Линуксе?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.161 секунд. Запросов: 23.