Интерактивный вывод в консоль
От: fuyant  
Дата: 14.08.07 14:42
Оценка:
Да, вроде как тема написана правильно
Добрый всем день

Нужно реализовать такой вывод в консоль, чтобы пользоватль мог его редактировать. Проще всего объяснить на примере unix'ового шелла — когда мы нажимаем tab при написании пути или имени файла, баш выдает подходящее имя. Причем мы можем потом отредактировать/удалить этот текст. Понимаю, это возможности баш-шелла.
А стандартный вывод в stdout/err? По-дефолту он остается read-only для пользователя...
Вот в чем вопрос — возможно ли такое реализовать?

Вопрос в С\С++ потому что желателдьно поддержка от С/С++ стд или boost либ, ибо проект будет для win/unix.
Или стоит разнести отдельно в топики по win32/unix?

с уважением
Re: Интерактивный вывод в консоль
От: Кодт Россия  
Дата: 14.08.07 18:48
Оценка:
Здравствуйте, fuyant, Вы писали:

F>Вопрос в С\С++ потому что желателдьно поддержка от С/С++ стд или boost либ, ибо проект будет для win/unix.

F>Или стоит разнести отдельно в топики по win32/unix?

К бусту это отношения не имеет, потому что вопрос стоит так:
Написать собственную консоль, которая — как и полагается всем консолям — бэкендом цепляется на потоки ввода-вывода, а фронтэндом — на взаимодействие с пользователем (создаёт окно / цепляется к текстовому терминалу...; рисует буковки; слушает клавиатуру; ну и т.д. и т.п.)

Можно ли сделать это кроссплатформенным — сомневаюсь. Во всяком случае, это будет затратно (и сведётся к написанию консолей для виндов отдельно, для никсов отдельно).

А консольная прога, если родительский процесс передал ей хэндл своей консоли — пользуется ею, а если не передал — создаёт дефолтную средствами операционной системы.

Примитивную донельзя консоль мы можем видеть в окошке Output у Visual Studio, куда она валит выхлоп компилятора.
FAR творчески переосмысливает (встраивается в) дефолтную консоль товарища Коммандкома.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: Интерактивный вывод в консоль
От: fuyant  
Дата: 14.08.07 22:06
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Написать собственную консоль, которая — как и полагается всем консолям — бэкендом цепляется на потоки ввода-вывода, а фронтэндом — на взаимодействие с пользователем (создаёт окно / цепляется к текстовому терминалу...; рисует буковки; слушает клавиатуру; ну и т.д. и т.п.)


не, это перебор. Эта фича того не стоит

К>FAR творчески переосмысливает (встраивается в) дефолтную консоль товарища Коммандкома.


Кстати, Фар — это ж обычное консольное приложение. И Фар позволяет вводить и редактировать текст, т.е. он выполняет то, что мне нужно. Как он это делает? Спрашивать у фаровцев практически бесполезно, они жадные, я уже пробовал однажды.... хотя стоит попробовать еще раз
И еще пришло в голову — если в обычном cmd жать стрелочки вверх/вниз, выводятся команды из истории. Может есть возможность заставить консоль сделать такое для меня? Напрмиер, подменить буфер истории, или еще как....

По здравому размышлению пришел к выводу, что мультиплатформенно действительно не получится, раз стандартная библиотека такое не поддерживает. Все таки cmd и bash — не одно и то же, хотя обе умеют так рабтать.... А цмд даже предлагает по кругу все файлы по нажатию таба. Только щаз узнал
Re[3]: Интерактивный вывод в консоль
От: Кодт Россия  
Дата: 15.08.07 09:21
Оценка: 3 (1)
Здравствуйте, fuyant, Вы писали:

F>Кстати, Фар — это ж обычное консольное приложение. И Фар позволяет вводить и редактировать текст, т.е. он выполняет то, что мне нужно. Как он это делает? Спрашивать у фаровцев практически бесполезно, они жадные, я уже пробовал однажды.... хотя стоит попробовать еще раз


Внимательно читаем всю справку по Console API. Там есть и прямое чтение/запись в текстовый видеобуфер, и асинхронное чтение клавиатуры, и ещё много чего.

F>И еще пришло в голову — если в обычном cmd жать стрелочки вверх/вниз, выводятся команды из истории. Может есть возможность заставить консоль сделать такое для меня? Напрмиер, подменить буфер истории, или еще как....


Обрати внимание: если ты запустишь какую-нибудь простенькую интерактивную консольную программу из-под фара, то не получишь в ней все те фичи, которые умеет сам фар. Только то, что предоставляет тебе cmd (стрелка вверх — предыдущая строка, и т.п.)
То есть, фар не делает собственную консоль, а пользуется дефолтной.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Интерактивный вывод в консоль
От: vnp  
Дата: 15.08.07 17:03
Оценка:
Здравствуйте, fuyant, Вы писали:

F>Да, вроде как тема написана правильно

F>Добрый всем день

F>Нужно реализовать такой вывод в консоль, чтобы пользоватль мог его редактировать. Проще всего объяснить на примере unix'ового шелла — когда мы нажимаем tab при написании пути или имени файла, баш выдает подходящее имя. Причем мы можем потом отредактировать/удалить этот текст. Понимаю, это возможности баш-шелла.


Строго говоря, это возможность библиотеки readline. Есть ли хорошая реализация для win — не знаю (cygwin вас, скорее всего, не устроит).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.