Здравствуйте. Такой вот вопрос возник. Может кто видал достойную замену std::cout ? Хочу что-то типа cout с уже перегруженным << , чтобы вывод в прогах можно было легко перестраивать под разные ОСи и графические библиотеки. К примеру вывод для пользователя писать так: my_ported_cout << "blah blah" << endl; с возможностью изменять только реализацию самого my_ported_cout без замены всех конструкций подобного рода. Скажем под винду чтоб вывод в окошко шел (хэндл передавать объекту типа my_ported_cout.set_window_handle(hOutputWnd); ) под дос - по стандартному в консольку (stdout) под юнихи - опять по обстоятельствам в зависимости от того какая приблуда для графики используется. Есть такое где-нибудь или придется велосипед изобретать? Удалось реализовать нечто подобное на С, но это трудно назвать универсальным.
Используя #ifdef _WINDOWS_ и глобальную переменную-хэндл окна функция сама решает как ей с пользователем общаться. А вывод в версиях программы под ДОС/юнихи(консоль) и под вин отличаются только предварительной инициализацией той самой глобальной переменной путем set_window_handle(hOutputEditBox); для вин версии. Иллюстрация: Если есть #define _WINDOWS_ my_cout("Blah blah"); бла-блахает через SetWindowText(); Если нету, то через printf(); в stdout. сама my_cout() c переменным числом параметров и делает все прозрачно , совсем как printf(); А в С++ я не знаю как такое соорудить чтоб удобно было :) Вот...помогите советом %)
Приветствую Вас, Podbelsky! Ну... Можно сделать что-то вроде плагина с этим классом... То есть, лежит у тебя dll-ка с прогой, и в зависимости от ОС меняется. Интерфейсные функции остаются теми же... А всякие типа, #define _WINDOWS_ работают только для компилятора, то есть, если ты компилируешь в винде, оно и будет учтено, а в runtime на код эти директивы не влияют.
Ответ отправлен: 03.01.2003, 23:16 Отправитель: baldr
Вопрос № 486
Может кто-нибудь подсказать алгоритм вычисления дня недели. Есть разница м/у введённой датой и 1,01,2001 (понедельник). Зарезервированными функциями пользоваться нельзя. Всё вручную.
Добрый день, Lexus! Подели разницу по модулю на 7 (X%7) Получится число от 0 до 6. Это число используй как индекс массива, где лежат дни недели. Ответ отправлен: 04.01.2003, 17:41 Отправитель: kvINT Отвечает Jadd
Здравствуйте, Lexus! А мой код не работает разве? Я же тебе послал пример. FormatDateTime("dddd", dtDate); Ответ отправлен: 05.01.2003, 02:34 Отправитель: Jadd
Вопрос № 487
Ну вот, это случилось и с 4 Builderом. Просто не видит новых строк и отказывается компилировать старые. Такое чувство, что он создал где-то себе копию и работает с ней.
Приветствую Вас, Lexus! Может помочь удаление всех *.obj, *.tds, *.~* и чистка директории, куда по умолчанию проекты ложатся. Всякие прожекты1 в дире $bcbProjectsproject1.* Ответ отправлен: 06.01.2003, 11:40 Отправитель: Eugene
Вопрос № 489
Здраствуй, Jadd! Пожалуйста, как появится Рихтер на русском, пришли его и мне.
Добрый день, Jens! Ок. Появится буквально в среду. Только просьба писать мне на jadd@rol.ru Ответ отправлен: 05.01.2003, 01:54 Отправитель: Jadd
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.