Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2012, 12:18   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Гром, Берс имел в виду что не нужно бояться АПИ функций, ведь они итак применяются.

вообще я не понимаю боязни АПИ, с учетом того что применяется dotNET.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.04.2012, 12:21   #12
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
_Bers, все, дошло.
Судя по твоим кривляниям - не очень дошло.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 12:55   #13
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
не очень дошло
Оууукей, пойдем от печки.
Цитата:
на "чистом" с++ не существует никаких "консолей", "дисплеев", "окошек", и "операционных систем".
Зато существует стандартный поток вывода, в который можно писать сколько угодно. И вывод символа '\b' - один из вариантов использования чистого C++.
Цитата:
На "чистом" с++ - никак.
При работе в операционной системе Windows, любые библиотеки, работающие с вводом/выводом в конечном счете дергают winapi.

Ты можешь быть удивлен, но даже всеми любимые printf и std::cout в конечном счете дергают winapi.
std::cout - это самый, что ни на есть "чистый C++". Чище не бывает, это стандарт, не зависящий от реализации. При использовании стандартных потоков программисту вообще ультрафиолетово, в какой ОС он работает, для него не существует WinAPI, особенно если он пишет под какой-нибудь Mac или *nix.
Цитата:
Каким образом ты будешь стирать символы, если тебе не доступны функции winapi ?
Попробуйте std::cout << "Hello, world" << "\b"; Узнаете много нового.
Цитата:
Более того: вообще, весь файловый ввод/вывод будет полностью парализован, если запретить winapi.
Точно в такой же степени, как если запретить использовать процессор или выключить компьютер из розетки. В конечном итоге вывод C++ в винде использует WinAPI, тот в свою очередь использует команды процессора, а процессор гоняет туда-сюда электрончики. Но программисту на C++ не должно быть дела до этого - для него не существует в этот момент ни WinAPI, ни процессора, ни квантовой физики. У него есть только язык и стандартный поток вывода. Он может не то, что не разбираться в WinAPI, он может работать под другой осью и не обязательно на десктопе.
Фразы типа "без использования WinAPI невозможно вывести на экран ни одного символа" абсолютно равносильны фразе "без использования компьютера невозможно вывести на экран ни одного символа". А вопрос-то, мягко говоря, в другом.
Вопрос в том, можно ли что-то сделать, не используя WinAPI на уровне программиста, а не на уровне операционной системы. Ответ: можно, но это будет либо нерационально (с использованием вывода этого несчастного символа '\b'), либо придется использовать сторонние библиотеки (и функции типа борландовского gotoxy), которые при этом тоже не входят в стандарт.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 01.04.2012, 13:09   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не выводя массив заново?
А что мешает очистить консоль и вывести заново эти элементы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.04.2012, 13:20   #15
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А что мешает очистить консоль и вывести заново эти элементы?
Так мерцание некрасивое получается. А если там приходится каждые пару секунд выводить - это вообще мрак.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 01.04.2012, 13:52   #16
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
std::cout - это самый, что ни на есть "чистый C++". Чище не бывает, это стандарт, не зависящий от реализации. При использовании стандартных потоков программисту вообще ультрафиолетово, в какой ОС он работает, для него не существует WinAPI, особенно если он пишет под какой-нибудь Mac или *nix.
"А есть ли похожая функция в чистом c++. без win api ? или может её можно как нибудь создать?"


Если ты работаешь в ос WINDOWS, ответ - нет.

В WINDOWS, "чистый" std::cout используют этот самый winapi. Если критично его не использовать, то весь стандартный ввод/вывод так же становится недоступным.

Невозможно создать функцию по работе с консолью, в обход winapi, не нарушив лицензию майкрософт.

С другой стороны, если допустимо сторонним библиотекам использовать winapi в своих недрах, то теряется всякий смысл вообще запрета на его использование на верхнем уровне.

Это понятно?

Если цель запрета использования winapi в явном виде - не привязываться к платформе, то и нужно ставить было вопрос о кросс-платформенности, а не разрешении/запрете использовать само winapi.

Это понятно?

Человек спросил: "как реализовать вывод в обход winapi". Ответ - в WINDOWS это не возможно.

Это понятно?
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 17:09   #17
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ом... _Bers, вы действительно верите, что автор боится, что во время его работы за компьютером где-то (без его ведома) будут вызваны функции WinAPI? Я на 99,9983% уверен, что автор не хотел писать функции WinAPI в своем коде - либо просто не хочет/боится/считает нерациональным использовать такие низкоуровневые средства, либо они не проходили WinAPI, и ему по заданию не стоит использовать его функции.

Вопрос стоит о невызове функций WinAPI в написанном коде явным образом. Инфа 99,9983%. Впрочем, автор потом сам, наверно, подтвердит.
Что вообще за бред с запретом на использования ВинАПИ совсем, в том числе абсолютно неявно? Для чего это может быть нужно? Галактика что ли взорвется, если на компьютере будет вызвана функция WinAPI? Так я вам по секрету скажу - вызов и работа окна консоли в Винде без использования ВинАПИ где-то в недрах в принципе невозможна. Я уж не говорю о том, что вам не удастся запустить саму винду без использования ВинАПИ.

Какое-то извращенное у вас восприятие этого вопроса и, по моему скромному мнению, мало соответствующее действительности. Я, конечно, могу понять, что иногда человек видит только то, что хочет видеть, но чтобы хотеть настолько странного? Это выше моего разумения.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 01.04.2012, 17:40   #18
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Ом... _Bers, вы действительно верите, что автор боится, что во время его работы за компьютером где-то (без его ведома) будут вызваны функции WinAPI?
Нет. Я вообще не то что бы верю, или не верю. Я просто не делал никаких предположений относительно "тайных желаний автора".

А исходил исключительно из его речей:
Цитата:
Сообщение от DAVID973 Посмотреть сообщение
А есть ли похожая функция в чистом c++. без win api ? или может её можно как нибудь создать?
Я лишь довел до его сведения мысль о том, что взаимодействие с системой осуществляется через её штатный интерфейс (winapi), поэтому, без win api сделать вывод в консоль под форточками не получится.

И что даже "чисто стандартная плюшка" std::cout в своих недрах опять таки дергает winapi для вывода.

А уж что именно хочет автор - это уже его личная думка.
Например, он может подумать: "ну раз все равно используется winapi, а кросс-платформа не нужна, почему бы тогда не попользоваться апи-функциями консоли?"

Или он может подумать: "а может быть есть какая нибудь готовая библиотека, которая кросс-платформенная, но с её помощью можно удобно выводить цветной текст в любом месте экрана?".

Или он может подумать: "а есть ли какие нибудь стандартные плюшки с++, наподобие std::cout, но которые умеют, допустим, установить координаты курсора, или изменить цвет символов"

И тп. Но зачем я сейчас будут гадать? Автору будет нужно - он просто уточнит момент.

Цитата:
Сообщение от Гром Посмотреть сообщение
Какое-то извращенное у вас восприятие этого вопроса и, по моему скромному мнению, мало соответствующее действительности. Я, конечно, могу понять, что иногда человек видит только то, что хочет видеть, но чтобы хотеть настолько странного? Это выше моего разумения.
У меня восприятие задачи конкретное. Автор задал конкретный вопрос, и получил конкретный ответ.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 19:02   #19
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Нет. Я вообще не то что бы верю, или не верю. Я просто не делал никаких предположений относительно "тайных желаний автора".
Ясно. Уже вижу картину, как к вам в столярной мастерской приходит человек с доской и просит отпилить ему лишние 20 сантиметров, а вы ему голову отпиливаете. Вопросов больше не имею. С ужасом ожидаю появления первых Т1000.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 01.04.2012, 19:15   #20
DAVID973
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 16
По умолчанию

при выводе символа '\b' мерцание возникает сильнее чем если стирать а затем заново выводить весь массив. p.s. автор вопроса не изучал WIN API и поэтому просто не знает способы применения этих функций в консоли.

Последний раз редактировалось DAVID973; 01.04.2012 в 19:58.
DAVID973 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
событие для массива созданных элементов areyoudead Общие вопросы Delphi 52 14.10.2014 19:25
Счетчик элементов массива (для модели толпы) mrandrew1990 Общие вопросы Delphi 6 05.03.2012 18:58
Не придумать условие для элементов массива ShadowNecros Помощь студентам 7 14.04.2011 22:12