Closed TopicStart new topicStart Poll

Страницы: (3) 1 2 3 
Roman
дата: [ i ]
  • Group Icon
  • Спонсор форума
  • Репутация: 868
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (GregZ @ 02.06.2006 - время: 01:22)
Еще раз спрашиваю, какая локаль у компилятора? Как компилятор должен интерпретировать последовательность байтов L"Привет всем!", чтобы перевести их в юникод?

Замени wcout на cout и убери юникод. Что получится?

Какая локаль не знаю.

Получается 4060cb
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (Roman @ 02.06.2006 - время: 01:45)
Получается 4060cb

Юникод не убрал. Убери префик L у текста.
Локаль определяется виндой в региональных стандартах. Язык программ, не поддерживающих юникод должен быть русским.
Roman
дата: [ i ]
  • Group Icon
  • Спонсор форума
  • Репутация: 868
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (GregZ @ 02.06.2006 - время: 01:58)
QUOTE (Roman @ 02.06.2006 - время: 01:45)
Получается 4060cb

Юникод не убрал. Убери префик L у текста.
Локаль определяется виндой в региональных стандартах. Язык программ, не поддерживающих юникод должен быть русским.

Локаль русская стоит.
L убрал - всё тоже самое. ("¦ЁштхЄ тёхь!")
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (Roman @ 02.06.2006 - время: 02:15)
QUOTE (GregZ @ 02.06.2006 - время: 01:58)
QUOTE (Roman @ 02.06.2006 - время: 01:45)
Получается 4060cb

Юникод не убрал. Убери префик L у текста.
Локаль определяется виндой в региональных стандартах. Язык программ, не поддерживающих юникод должен быть русским.

Локаль русская стоит.
L убрал - всё тоже самое. ("¦ЁштхЄ тёхь!")

Не знаю, что сказать. Компилятора Borland Developer Studio 2006 под рукой нет, проверить не могу.
Nag_X
дата: [ i ]
  • *
  • Новичок
  • Репутация: нет
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен

#include <iostream>

int main()
{
std::wcout.imbue(std::locale(".866"));
std::wcout << L"Привет всем!" << std::endl;
}
При попытке компиляции с выводом в консоль(Builder 5), винда выдала сообщение о недостатке виртуальной памяти.
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Народ, могу посоветовать только сказать большое спасибо фирме Borland за отличные компиляторы.
Приведеный мною код абсолютно корректен и соответствует стандарту.
Roman
дата: [ i ]
  • Group Icon
  • Спонсор форума
  • Репутация: 868
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE
При попытке компиляции с выводом в консоль(Builder 5), винда выдала сообщение о недостатке виртуальной памяти.

Ну такого я никак не ожидал.
Но меня больше беспокоит то, что при попытке установить Интербейс я увидел синий экран (при каждой попытке). Прямо в начале установки... Называется скачал новый Интербейс...
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Сегодня на работе вышел злободневный спор на тему выбора обертки для указателей, возвращаемых фабричными функциями. В результате сошлись только в одном - "сырые" указатели возвращать нельзя - чревато утечкой ресурсов. Что вполне естественно.

Что касается оберток, одни убеждали использовать std::auto_ptr, уповая на ее наличие в стандартной библиотеке, быстроту работы и ключевую особенность копирования использующую "move semantics" называемую также "передачей владения". Другие предлагали использовать boost::shared_ptr или std::tr1::shared_ptr. Их аргументами являлись универсализм, возможность безболезненного "разделения" указателя несколькими сущностями одновременно, и поддержку собственной функции освобождения ресурса.

У обеих оберток есть свои неисправимые преимущества и несомненные недостатки :)
Что по этому вопросу скажет народ?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (GregZ @ 06.06.2006 - время: 23:12)
Что по этому вопросу скажет народ?

Народ, как всегда, безмолствует...

Будто сам с собой на форуме разговариваю. Так и тронуться недолго.
Были отличные бойцы: JeyLo, tetro, AngeLR. Только пропали...
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (GregZ @ 08.06.2006 - время: 22:06)
Народ, как всегда, безмолствует...

Народ еле думает. Жара... :) И самолеты крыльями машут...

Мы STL не знаем, у нас свойная кросспроджект шаред либрари есть. В ней есть что-то типа auto_ptr. wink.gif На чистые указатели с операциями выделения или освобождения памяти запрет.
tetro
дата: [ i ]
  • *
  • Специалист
  • Репутация: 15
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Гриша, спасибо за комплемент!

Если честно, то по хорошему у меня по программированию только докторская степень (без предыдущих wink.gif). Я - алгоритмист (причем более в непрерывных вещах чем в дискретных), т.е. да имплементирую много и активно, но обычно моя цель это эффективность с наименьшими потерями а не всяческие ОО красоты wink.gif
Т.е. за перво-принципами это ко мне, а с какой стороны открывают стандарт - это вопрос отдельный...

А разговариваю сам с собой я столько лет сколько себя помню wink.gif
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Сегодня наконец нашел в электронном виде (DjVu) книжку "Дизайн и эволюция C++" Бьярна Страуструпа на русском языке Её бумажная реинкарнация в моей библиотеке изрядно истрепалась и представляет собой просто жалкое зрелище :)

PS кому интересно, лежит у меня на FTP здесь
niktuba
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 118
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Народ, я тут попытался найти в Visual C++ 6.0 функцию, которая позволяет выводить на экран текст в вертикальном направлении - надо к оси Y подпись присобачить. Среди извратов с API TextOut, TabbedTextOut, DrawText, DrawTextEx, к удивлению своему, не обнаружил ни одного, позволяющего менять направление текста. Есть ли простые, не использующие Microsoft Foundation Classes, коды, показывающие, как проще всего напечатать
вертикальный текст?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (niktuba @ 12.07.2006 - время: 23:12)
Народ, я тут попытался найти в Visual C++ 6.0 функцию, которая позволяет выводить на экран текст в вертикальном направлении - надо к оси Y подпись присобачить. Среди извратов с API TextOut, TabbedTextOut, DrawText, DrawTextEx, к удивлению своему, не обнаружил ни одного, позволяющего менять направление текста. Есть ли простые, не использующие Microsoft Foundation Classes, коды, показывающие, как проще всего напечатать
вертикальный текст?

Не там ищешь. Вывести вертикальный текст способна любая из приведенных тобой функций.
Они выводят текст определенным шрифтом. Все что тебе надо - создать его вертикальным.
Обрати внимание на четвертый параметр (orientation) функции CreateFont. Он позволяет задавать угол отклонения базовой линии выводимых символом от оси абсцисс.

Это сообщение отредактировал GregZ - 13-07-2006 - 10:09
niktuba
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 118
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (GregZ @ 13.07.2006 - время: 10:07)
Не там ищешь. Вывести вертикальный текст способна любая из приведенных тобой функций.
Они выводят текст определенным шрифтом. Все что тебе надо - создать его вертикальным.
Обрати внимание на четвертый параметр (orientation) функции CreateFont. Он позволяет задавать угол отклонения базовой линии выводимых символом от оси абсцисс.

Ну как же не там? Тута - на sexnarode licklips.gif Если без шуток, то огромное спасибо. Я бы, может, и сам нашел, но потратив много времени, которого у меня сейчас нет совсем. В Португалии конец июля - как конец декабря в пристнопамятном СССР: надо доделать все, в августе португалы сваливают в отпуск и никого не найти. Как закончу возиться с бумагами и железками - пренепременно попробую CreateFont... 0096.gif
niktuba
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 118
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (GregZ @ 13.07.2006 - время: 10:07)
Не там ищешь. Вывести вертикальный текст способна любая из приведенных тобой функций.
Они выводят текст определенным шрифтом. Все что тебе надо - создать его вертикальным.
Обрати внимание на четвертый параметр (orientation) функции CreateFont. Он позволяет задавать угол отклонения базовой линии выводимых символом от оси абсцисс.

Замечательно! Все получилось. Правда, всякие там TextOut(...) вертикальный текст выравнивают с загибонами, но если покумекать, то все встает на место:
C++ sexnarod journal ;)

Я только вот чего не понял - чистит ли GDI'шный Device Context за собой созданные графические объекты или нет? В MFC используются классы с конструкторами/деструкторами, и там все понятнее. А в GDI - handles, и все более туманно.

Иными словами, в программе

BOOL CEChart::fbDrawChart(RECT* aPrcChart, HDC ahDC)
{
HBRUSH h_ChartBrush = CreateSolidBrush(RGB(250, 250, 100));
HBRUSH h_DefBrush = (HBRUSH__ *)SelectObject(ahDC, h_ChartBrush);
FillRect(ahDC, aPrcChart, h_ChartBrush);
// Is it sufficient
SelectObject(ahDC, h_DefBrush);
// or we need DeleteObject(SelectObject(ahDC, h_DefBrush));
// to clear the space allocated by h_ChartBrush ?
return TRUE;
} // BOOL CEChart::fbDrawChart(RECT* aPrcChart, HDC ahDC)







дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Чистить за собой обязательно, т.е. всегда надо звать DeleteObject.
niktuba
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 118
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (JeyLo @ 27.07.2006 - время: 14:01)
Чистить за собой обязательно, т.е. всегда надо звать DeleteObject.

Спасибо, так мне сердце и подсказывало rolleyes.gif
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Кто скажет, что делает эта функция без всяких там условных переходов? :)))

inline int h3(int m,int y) {
return 28+!!(m-2)*2+!(y%4)*!(m-2)+m/8*(1-m%2)+(1-m/8)*(m%2);
}

дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (JeyLo @ 02.08.2006 - время: 15:02)
Кто скажет, что делает эта функция без всяких там условных переходов? :)))

inline int h3(int m,int y) {
return 28+!!(m-2)*2+!(y%4)*!(m-2)+m/8*(1-m%2)+(1-m/8)*(m%2);
}

Скажем тоже само что и
CODE
inline int h3(int m)
{
 return 30+m*(1-m%2)+(1-m)*(m%2);
}


А без +30 (для положительных m) просто превращает все нечетные m в -(m-1). Вот такой же код с использованием тернарного оператора:
CODE
return m % 2 ? -(m - 1) : m;


Для чего это нужно, не знаю.
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Не туда думаешь.. :))
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
cout << h3 ( 2, 2006 ) будет 28, cout << h3 ( 2, 2000 ) будет 29, а cout << 30+2*(1-2%2)+(1-2)*(2%2) будет 32...

В смысле код - получение дней в месяце в году чистой математикой. Воооот... :)))
niktuba
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 118
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Создавая программы на С++ мне часто приходится писать документацию, включающую три языка, рисунки и исходный код. Поэтому никуда не деться, приходится для этого дела использовать MS Word. Для автоматического выделения синтаксиса (syntax highlighting) я приспособил ADX_Toys_2_WD
http://www.canadiancontent.net/tech/downlo..._Toys_2_WD.html. Но эта утилита довольно глупая, подсвечивает только базовые ключевые слова, а даже #include уже кишка тонка. Есть ли в природе макросы/add-in к Ворду, которые позволяют подсвечивать все ключевые слова и выделять
// зеленым комментарии?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
http://www.codeproject.com/com/wordhighlight.asp
niktuba
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 118
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (JeyLo @ 04.08.2006 - время: 17:01)
http://www.codeproject.com/com/wordhighlight.asp

Замечательно, спасибо!
C++ sexnarod journal ;)
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (3) 1 2 3

Closed TopicStart new topicStart Poll0


Рекомендуем почитать также топики:

Весь необходимый СОФТ

Комп - гипнотизёр

3ds max 5

Почтовый сервер

Компутер издевается.



>