Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Вставка в отчет греческой буквы


Автор: Нитонисе 26.5.2011, 11:42
Программно генерирую отчет. Нужно вставить греческую букву "фи". Шрифт отчета - Times New Roman, шрифт редактора кода - Courier New. И там и там есть греческая буква "фи". Но в редакторе кода она почему-то не отображается, вместо нее вопросительный зак. он же идет и в отчет. Как решить эту проблему?

Автор: _Dimon_ 26.5.2011, 12:06
Какая IDE? Тут нужна поддержка юникода. Если RAD 2009 и выше, то должно работать.
Правда еще и генератор отчетов должен поддержывать...

У меня на XE вот так нормально работает.
Код

 ShowMessage(L"φ");


P.S. Вставитшь эту букву в код, IDE попросит сохранить *.cpp файл в кодировке UTF-8. Нужно согласится ))))

Автор: Нитонисе 26.5.2011, 12:29
У меня Builder 6.
Что касается отчета, то фактически  его формирую в переменной типа AnsiString с использованием разметки HTML, сохраняю эту строку в файл и открываю в браузере.

Автор: _Dimon_ 26.5.2011, 13:21
Юзай TMS Unicode Component Pack, правда она платная.
Но можно найти в нете Tnt Delphi Unicode Controls

Автор: Usper 26.5.2011, 13:25
Генерируете HTML отчёт? Браузер обычно сам решает какой ему шрифт использовать и ему глубоко плевать какой шрифт используется в IDE. Для греческих букв можно использовать escape-последовательности, для этого в html-документ надо написать что-то вроде:
Код

...
а тут у нас заглавная буква "фи" - Φ, а тута строчная - φ
...

Другие escape-последовательности смотрите, например, http://www.rvsn2.narod.ru/simbol.htm. Проверял код в Opera 11.11 и IE 6.

Автор: Нитонисе 26.5.2011, 13:38
Шрифт отчета я задаю сам тэгами HTML. А шрифт редактора кода упоминал в том смысле, что по идее "фи" должно отображаться и там. Что касается браузера, то я использую просто компонент CppWebBrowser. Именно в нем я открываю HTML-файл с отчетом. Никакие эскейп-последовательности тут не работают. 

Автор: Usper 26.5.2011, 14:20
Ну, видимо, это проблема CppWebBrowser, если уж древний "Осёл" их понимает... А вообще какие-нибудь последовательности там работают?

Автор: Нитонисе 26.5.2011, 14:29
Откуда ж мне знать) Я вижу проблему в том, что нужный символ не отображается в редакторе кода. Браузер-то способен воспринять греческую букву. Но так как в редакторе кода вместо буковки "фи" вставляется вопросительный знак, то он же и идет в отчет. И, кстати, шрифт редактора кода нельзя сменить на Times New Roman.

Может можно передать в отчет какой-то код символа, который может прочитаться шрифтом Times New Roman?

Автор: Usper 26.5.2011, 14:39
Я или чего-то не понимаю, или вы чего-то недоговариваете smile Я сохранил кусок текста из моего примера в файл, засунув его в html теги, набрал простенький пример с CppWebBrowser, открыл свой html-файл и всё прекрасно отобразилось:
user posted image
Возможно проблема в генерируемом html-отчёте, незакрытый тег, или ещё что-нибудь. Попробуйте повторить то, что сделал я. Если опять будет проблема, значит дело в системе, не хватает какого-нибудь шрифта.

Автор: Нитонисе 26.5.2011, 14:51
 smile 

Набирая φ я не учел точку с запятой. А так действительно работает. Благодарю  smile 
Пока другие последовательности не смотрел, но мне понадобится много разных символов, имеющихся в шрифтах, но не отображаемых в тексте, в том числе математические. Пойду смотреть.

Автор: xvr 27.5.2011, 21:19
Цитата(Нитонисе @  26.5.2011,  13:38 Найти цитируемый пост)
Что касается браузера, то я использую просто компонент CppWebBrowser.

Открою вам страшную тайну - но CppWebBrowser это ActiveX обвертка над IE. 
Цитата(Нитонисе @  26.5.2011,  13:38 Найти цитируемый пост)
Никакие эскейп-последовательности тут не работают.  
Работают, более того, у него есть стандартная последовательность, позволяющая вставить любой Unicode символ по его коду (см. в MSDN)

Автор: Нитонисе 28.5.2011, 10:24
Цитата(xvr @  27.5.2011,  21:19 Найти цитируемый пост)
Открою вам страшную тайну - но CppWebBrowser это ActiveX обвертка над IE.

Это мне ни о чем не говорит  smile 

Цитата(xvr @  27.5.2011,  21:19 Найти цитируемый пост)
есть стандартная последовательность, позволяющая вставить любой Unicode символ по его коду (см. в MSDN)

А можно об этом поподробнее?

Автор: xvr 30.5.2011, 19:19
Цитата(Нитонисе @ 28.5.2011,  10:24)
Цитата(xvr @  27.5.2011,  21:19 Найти цитируемый пост)
Открою вам страшную тайну - но CppWebBrowser это ActiveX обвертка над IE.

Это мне ни о чем не говорит  smile 

Перевожу - CppWebBrowser умеет все, что умеет установленный на вашем компьютере Internet Explorer

Цитата

Цитата(xvr @  27.5.2011,  21:19 Найти цитируемый пост)
есть стандартная последовательность, позволяющая вставить любой Unicode символ по его коду (см. в MSDN)

А можно об этом поподробнее?

&#<code>; - Unicode символ (code - в виде десятичного числа)
&#x<code>; - Unicode символ (code - в hex)

http://msdn.microsoft.com/en-us/library/aa752011%28v=VS.85%29.aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)