| Автор
| Сообщение |
|
|
|
Цитата |
|
В RTF формате код ANSI символа записывается как \'ef
Здесь ef - Hex-представление кода символа.
В Unicode представляется по другому: \u178?
Допустим u...?-Unicode, число - код символа.
178 - это в данном случае: 2 - надстрочный символ или
квадрат числа, в таблице символов юникод - U+00B2
Вопрос: как и откуда можно из '00B2' получить '178'?
Есть ли в Windows API функции такого преобразования?
Еще один вопрос (дополнение):
Как в Label1.Caption:=IntToStr(Ord(#$00B2));
можно вместо #$00B2 написать '00B2' - строку и
получить результат '178'? |
|
| В начало |
|
 |
|
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
В Делфи, кажется, достаточно завести переменную типа WideString. Присвоение в/из String будет конвертировать. _________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Все дело в том, что конвертировать из String в WideString не так-то просто, как это кажется. Для того чтоб сделать отчет в FastReport в RichEdit как раз очень надо попотеть. Этим я как раз сейчас и занимаюсь. А вообще с RichEdit и Unicode я уже мучаюсь более полугода. Попробуйте. Тогда и ответы, наверное, конкретнее будут, Шурик, ... |
|
| В начало |
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
Ну ты не очень возмущаяся поверхностным ответом. Почитай -- тут иногда спрашивают про такие очевидные вещи, что не понимаешь, как вобще про такое можно спрашивать. Поскольку никакого диалога в этой ветке не было, я предположил, что это один из таких случаев.
Если ты столь продвинут, то объяснил бы детальней, что ты знаешь, что не выходит. Думаю у большинства здесь присутствующих опыт работы с Юникодом меньше твоего. Может ещё сам чему-то просветишь.
Я могу сказать честно, что с Юникодом сталкивался весьма эпизодически. В основном использовал WideString в интерфейсных функциях СОМов. Пару раз на уровне АПИ что-то конвертировал из Юникода (или в него). На уроне АПИ так и не уяснил пока разницу между multibyte string и wide-character. Для себя пришёл к выводу, что для использования Юникода в Делфи достаточно использовать тип WideString, всё остальное сделает компилятор. _________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
Прочёл немного про multibyte. Любопытство одолело Правда не понял, какой из множества стандартов используется в WinAPI. Ну да ладно, из того, что прочёл, я понял, что не буду это использовать.
По поводу сложностей конвертации String в WideString. В чём там загвоздки? Мне казалось всё тривиально (в отличии от MBCS): есть AnsiChar и Locale; им однозначно соответствует двухбайтный WideChar. Берёшь n символов - получаешь n*2. Ну и наоборот. Вопрос только в том, чтобы Locale нужная была установленна.
Вобщем, объяснись, раз уж начал разговор.
| Цитата: | Как в Label1.Caption:=IntToStr(Ord(#$00B2));
можно вместо #$00B2 написать '00B2' - строку и
получить результат '178'? |
IntToStr( StrToInt('$00B2') )
Ты это спрашивал? _________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
|
|
|
Цитата |
|
На счет продвинутости, то тут я скорее всего не продвинут, а уже наверное двинут...
А началось все с того, что в моей программе (обычная база данных, используя *.dbf) попросили,
учитывая солидность фирмы, см2 писать см с 2 в верхнем индексе, да и "дельту" трехугольником
написать и запихнуть это в базу данных...
...ну во-первых dbf такого иметь не захотела, TEdit, TMemo, да и вся остальная "муть" не зависимо
от того какой тип строки ты напишешь... Остался один лишь TRichEdit...
В общем все начало тянуть в сторону Visual Studio (да еще и .NET). Но ведь родной Дельфак все
говорят покруче будет (не считая С++ - у него возможностей поболе будет). И решил я заново
"открывать Армению".
Короче с базами данных я еще в поиске, а вот с визуальной частью начал разбираться конкретно.
Я до сих пор не пойму почему Борланды изначально, начиная с 6 Дельфы, не сделали поддержку
Юникодами всех основных компонентов. Без Юникодов осталась лишь линейка 9х Винды - все NT давно
уже полностью поддержывает Юникоды.
Еще короче - для работы с Юникодами есть такая Tnt компонента - замена стандартных основных
компонентов Делфи. Но тут тоже не все гладко, хотя немного помучавшись работьть можно - альтернативы
пока нет...я во всяком случае не нашел.
RichEdit содержит в своей основе RTF формат. Я начал изучать его написав текст в WordPad и открыв его
в Блокноте - все коды на виду. Но русские символы тут пишутся русскими, а в RichEdit стоят коды, причем
русские символы - шестнадцатиричные коды, а Юникод (я уже выяснил что такое 178) - десятичные.
И все это надо чтоб в RichEdit ввести текст как в Word с разными шрифтами, размерами, символами,
индексами, стилями... А это в свою очередь надо для формирования красивых отчетов с использованием
Юникодов, не зависящих от Microsoft Office и других ему подобных платных.
Проблема еще заключается в том, что распечатать RichEdit очень просто, а сделать предварительный
просмотр, да еще в бланк документа какой-то рисунок вставить...
В общем эту проблему я уже решил - если надо обычный код преобразования могу написать для закрытия
темы, но очень интересуют возможности решения таких преобразований функциями API Windows... |
|
| В начало |
|
 |
|