Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти

 
Расширенный поиск

800784 Сообщений в 11254 Тем- от 88239 Пользователей - Последний пользователь: Zonova_Ekat

09 Декабрь 2019, 04:41:18
ADSL.Kirov.RuСообществаПрограммирование (Модератор: Ivanidze)Тема: Консольное приложение
Страниц: [1]   Вниз
Печать
Автор Тема: Консольное приложение  (Прочитано 984 раз)
zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« : 01 Март 2011, 10:30:19 »

блиин.. совсем переклинило Улыбка
Помогите пожалуйста : в консольном (с++) приложении как сменить кодировку (DOS/WIN/KOI) ??

ЗЫ VCL тоже можно подключить ...
« Последнее редактирование: 02 Октябрь 2014, 08:02:25 от zulus » Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
Shire
Ветеран
*****
Пол: Мужской
Сообщений: 1015



« Ответ #1 : 01 Март 2011, 11:30:44 »

блиин.. совсем переклинило Улыбка
Помогите пожалуйста : в консольном (с++) приложении как сменить кодировку (DOS/WIN/KOI) ??

ЗЫ VCL тоже можно подключить ...
Кодировку чего? Если в Windows на консоль выводятся крякозяблы, то перед используй функцию WinAPI
Код:
BOOL CharToOemBuff(
    LPCTSTR lpszSrc,
    LPSTR lpszDst,
    DWORD cchDstLength
);
перед выводом на консоль, либо используй UNICODE-функции для вывода на консоль.
Записан
zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« Ответ #2 : 01 Март 2011, 14:03:33 »

спасибо! понял....

давно не ваял в консоли. кракозябры были на экране... а американский не всем по вкусу Грустный

да... вот, выложу чего сваял... может кому сгодится ?
Код:
    String s = "Привет";
    AnsiToOem(s.c_str(),s.c_str()); //из строки беру, в неё же и сохраняю
    cout<<s.c_str()<<endl;
« Последнее редактирование: 01 Март 2011, 14:09:47 от zulus » Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
Shire
Ветеран
*****
Пол: Мужской
Сообщений: 1015



« Ответ #3 : 01 Март 2011, 14:40:33 »

выложу чего сваял... может кому сгодится ?
Код:
    String s = "Привет";
    AnsiToOem(s.c_str(),s.c_str()); //из строки беру, в неё же и сохраняю
    cout<<s.c_str()<<endl;
Никому не сгодится. Функция AnsiToOem объявлена как deprecated, и, к тому же, она не устойчива к переполнениям буфера.
За конвертацию кодировок "на месте", т.е. в один и тот же буфер, нужно нещадно п..ть черенком от лопаты.
Просто потому, что кодировки бывают по нескольку байт на символ.
Записан
zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« Ответ #4 : 01 Март 2011, 15:09:23 »

верно! каюсь...

но мне надо вывести только одну фразу:
Цитировать
Нажмите любую клавишу
, а мудрствовать лень

вот где жесть!

Тема закрыта
Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
Rebz
Постоялец
***
Пол: Мужской
Сообщений: 117



« Ответ #5 : 01 Март 2011, 15:23:19 »

верно! каюсь...

но мне надо вывести только одну фразу:, а мудрствовать лень

вот где жесть!

Тема закрыта

проще сделать вот так =)
Код:
setlocale(LC_ALL, "russian");
cout << "Нажмите любую клавишу!" << endl;
Записан
zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« Ответ #6 : 01 Март 2011, 15:25:06 »

где ж ты раньше был??? пока меня тут шир не разнёс Улыбка
Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« Ответ #7 : 02 Октябрь 2014, 08:17:49 »

оживлю темку очередным "типавопросом" (на самом деле, туплю чёт)...
итак:
требуется ввести значения некой функции (консоль!), допустим, такой:
F(x) = X1*X2 + X2*X3 + ... + (X1+X2)*X3+....
теперь, собссно, сам вопрос - требуют злые люди, чтоб в консоли был ввод переменных (х1...) в "свои" места, а не отдельно переменными...
блин, окошки даже рисовать не дают, надо примерно так как на рисунке, те Х1 уже введена (5) и курсор (его не видно) находится под Х2... курсор можно подсветить , выделив вводимую переменную

вот, сижу туплю... кто-нить раступите меня...
ПыСы кол-во переменных заранее не известно и вводится отдельно (4, 15, 152....), функцию нарисую - не проблема. просто не знаю как поставить курсор в уже "нарисованное" место Грустный
более того окно "прокручивается" - тк после ввода данных может последовать расчёт или новый ввод и её придется снова перерисовывать...
Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
Blackman
Администратор
*****
Пол: Мужской
Сообщений: 1508



WWW
« Ответ #8 : 02 Октябрь 2014, 10:56:25 »

Придется мудрить что-то с аналогами CRT (хз какой язык у тебя там, весь тред не читал), и абсолютными позициями на экране. Это же уже не обычный консольный ввод.
Записан

что-нибудь жизнеутверждающее

zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« Ответ #9 : 02 Октябрь 2014, 11:35:28 »

Придется мудрить что-то с аналогами CRT (хз какой язык у тебя там, весь тред не читал), и абсолютными позициями на экране. Это же уже не обычный консольный ввод.
дада, именно так...
пока "обошёл", нарисовав-таки "окошко" ввода и каждый раз перед вводом его "перерисовываю"...
посмотрим, если прокатит, то забью.
ПыСы язык самый тот - приплюснутый.
Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
Decoder
Ветеран
*****
Пол: Мужской
Сообщений: 1032



« Ответ #10 : 03 Октябрь 2014, 05:08:14 »

блиин.. совсем переклинило Улыбка

Поделись сокровенным. Зачем тебе вообще нужна консоль, если планируется интерактивная работа с ПО?
Записан
zulus
Ветеран
*****
Пол: Мужской
Сообщений: 3085



« Ответ #11 : 03 Октябрь 2014, 06:45:38 »

Поделись сокровенным. Зачем тебе вообще нужна консоль, если планируется интерактивная работа с ПО?
никакого "сокровения" нет )))) есть некий типакурсач от типастуденда для оооочень известной в узких кругах дамы чьё имя не принято называть в слух (сам - то я ровно к ней отношусь, но боюсь быть битым остальной братвой!)
она любит глумиться над несчастными студентами, задавай (изредка) неразрешимые задачи и, если, чел понимает суть вопроса, то сразу отменяет вопрос... но тут другой случай  Смеющийся
чел податливо кивал головой, когда она водила пальцем по коду, читая комментарии, и изредка задавала вопросы...
просто "попросила" студиозуса : "а можешь сделать так?".... а я потом полночи уснуть не мог  Веселый
короче, прокатило всё - говорю ж, тупо нарисовал некое подобие окна для ввода и подправил неск косячков (реально не обратил внимание ибо откель же мне было знать, что "точность вычислений не может быть больше 1") и усё.
и "... пишите пояснительную записку..."
Записан

Когда варишь людей в кипятке - первое время их можно не помешивать.Они делают это сами.
DVZ
Новичок
*
Пол: Мужской
Сообщений: 34



« Ответ #12 : 21 Октябрь 2014, 10:47:22 »

консоль на то и консоль, что имитирует работу старинных устройств типа телеграфа и пишущей машинки (ну если совсем далеко в историю копать), а там были соотв кнопки для перемещения вперед, назад, стереть назад и т.д. Так вот все сие в консоли эмулируется через спецсимволы. В Си помните наверняка про \n он генерит символы перевода строки и возврата каретки в начало строки (ВК ПС = 13 10 (они же 0D 0A в Hex)), есть также например \b который генерит символ возврата каретки в текущей строке на один символ влево (назад) - в описании какого-нибудь матричного принтера можно почти все коды найти.

или пример на сях для абсолютной позиции

COORD position;                                     // Объявление необходимой структуры
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  // Получение дескриптора устройства стандартного вывода
 
    position.X = 10;                                    // Установка координаты X
    position.Y = 15;                                    // Установка координаты Y
 
    SetConsoleCursorPosition(hConsole, position);       // Перемещение каретки по заданным координатам
 
    puts("Hello World!");
Записан
Страниц: [1]   Вверх
Печать
ADSL.Kirov.RuСообществаПрограммирование (Модератор: Ivanidze)Тема: Консольное приложение
Перейти в: