On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 59
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 04:44. Заголовок: Word unicode-символ


Вопрос, какая функция (готовая) выводит Unicode-символ на MS Word
или надо ручками рисовать?
как представить на Hb двухбайтный символ или более...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 31 , стр: 1 2 All [только новые]


Администратор




Пост N: 3882
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.09.19 19:37. Заголовок: создаем исходник в к..


создаем исходник в кодировке utf8:

proc main
local oWord, oText

REQUEST HB_CODEPAGE_UTF8, HB_CODEPAGE_UTF8EX

hb_cdpSelect( "UTF8EX" )

oWord := win_oleCreateObject( "Word.Application" )
oWord:Documents:Add()
oText := oWord:Selection()
oText:InsertAfter("АБВГДЕЁЖЗИЙКЛМНҢОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ")
oWord:Visible := .t.

retu

собираем, запускаем, видим в word то, что надо, весь алфавит

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2843
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 20:02. Заголовок: SergKis пишет aSim :..


SergKis пишет
 цитата:
aSim := {{utf8(1251), utf8(нац. символ), ... } и по идее
cValue := hb_StrToUtf8(cValue)
AEval(aSim, {|as|, cValue := StrTran(cValue, as[1], as[2]) })



hb_cdpSelect( "RU1251" )
aSim := {{hb_strtoutf8(chr(161)), } /* H */,hb_strtoutf8(chr(162)), } /* h */, ...}

hb_cdpSelect( "UTF8EX" ) // если prg файл не utf8 можно прочитать с файла или ресурсов в utf8 все буквы перекодировки
aSim[ 1 ][2] := "Ң"
aSim[ 2 ][2] := "ң"
...
hb_cdpSelect( "RU1251" )
cVal := hb_strtoutf8(cVal)
AEval(aSim, {|as| cVal := StrTran(as[1], as[2]) })
отправив в word cVal, тоже должно быть ok

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 70
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 21:24. Заголовок: нашел другой вариант..


нашел другой вариант вставить символ Юникод, более лучший

oWord := win_oleCreateObject( "Word.Application" )
oWord:Documents:Add()
oActive := oWord:ActiveDocument()
oMarks := oActive:BookMarks
oText := oWord:Selection()


oText:TypeText("04af") // код юникода - 04af
oText:ToggleCharacterCode() // перевод кода "04af" на юникод в связке с TypeText

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 71
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 21:28. Заголовок: Более лучший вариант..


Более лучший вариант вставки Юникод:

oWord := win_oleCreateObject( "Word.Application" )
oWord:Documents:Add()
oActive := oWord:ActiveDocument()
oMarks := oActive:BookMarks
oText := oWord:Selection()

oText:TypeText("04af") // указать код символа Юникода
oText:ToggleCharacterCode() // Перевод на символ Юникод согласно TypeText("04af")

// вместо oText:Content:InsertAfter:Text:=oText:Range:InsertSymbol(1199,"Times New Roman",.T.)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 72
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 21:53. Заголовок: Класс, попробовал ва..


Класс, попробовал вариант Pasha (попроще), сработало
только еще пришлось данный prg-файл перекодировать на UTF8 (открыл через Visual Studio Code, можно к примеру и на Notepad++)

Вариант SergKis - более подходит - если в этом духе перевести чтобы Юникод на контролах светилась

Получилось потому что подключили UTF8EX
REQUEST HB_CODEPAGE_UTF8,HB_CODEPAGE_UTF8EX
hb_cdpSelect( "UTF8EX" )

без UTF8EX не получалось...

Вопрос
1) и почему при простых
REQUEST HB_CODEPAGE_UTF8
hb_cdpSelect( "UTF8" )
не срабатывает ?

2) Обязательно подключать обе
REQUEST HB_CODEPAGE_UTF8
REQUEST HB_CODEPAGE_UTF8EX ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 73
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 22:44. Заголовок: так как, уже prg-фай..


так как, уже prg-файл в кодировке UTF8, то внутренние сообщения к примеру MsgInfo(cInfo), ...
перекинул через

cInfo:='текст сообщения'
cInfo:=hb_translate(cInfo,'UTF8','RU1251')
MsgInfo(cInfo)

а то вываливались кракозябры (контролы не поддерживают UTF8)

*на всякий случай напомнил кому еще понадобится

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2844
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 23:39. Заголовок: Новичок пишет Вариан..


Новичок пишет
 цитата:
Вариант SergKis - более подходит - если в этом духе перевести чтобы Юникод на контролах светилась


Этот вариант для того, что бы ничего не менять в программе (базы 866, cdp 1251). Надо сделать файл utf8 (без bom) в две строки из 6 символов
1 - ru1251 кодировка
2 - нац. кодировка
этот файл поместить в ресурсы и при старте, создавать массив соответствия букв aSim (как выше) из него.
Для word, excel делать перекодировку символов, т.е. requstы не нужны

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6431
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.09.19 01:41. Заголовок: Новичок пишет: откр..


Новичок пишет:

 цитата:
открыл через Visual Studio Code


Можно настроить работу с Харбором и МиниГуи на нём полностью.
Я уже пробовал.
Смотри - http://clipper.borda.ru/?1-3-0-00000621-000-0-0-1558698012

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3883
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.09.19 07:51. Заголовок: SergKis пишет: Этот..


SergKis пишет:

 цитата:
Этот вариант для того, что бы ничего не менять в программе (базы 866, cdp 1251). Надо сделать файл utf8 (без bom) в две строки из 6 символов



Пока в харборе нет киргизской кодировки, функция hb_strtoutf8 не будет работать на трех дополнительных буквах. Их же нет в ru1251, и правила перекодировки нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2846
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.19 08:45. Заголовок: Pasha пишет Пока в х..


Pasha пишет
 цитата:
Пока в харборе нет киргизской кодировки, функция hb_strtoutf8 не будет работать на трех дополнительных буквах. Их же нет в ru1251, и правила перекодировки нет.


В программе мы ничего не перекодируем.
В файле utf8 в первой строке (можем получить программно hb_strtoutf8(chr(161)), } /* H */,hb_strtoutf8(chr(162)), } /* h */, ...)
во вторую строку, проще, взять сайт с киргизским языком и перенести редактором (или программно как выше)
Это делаем один раз и при сборке помещаем этот файл (без бом проще) в ресурсы
При старте читаем из ресурса в строку (нет перекодировок), можно и из внешнего файла hb_memoread()
Создаем aTx := hb_aTokens(cFromRes, CRLF) и из 2х строчного массива делаем aSim как было выше, там где надо делаем
cVal := hb_StrToUtf8(cVal) // cdp 1251 -> Utf8
AEval(aSim, {|as| cVal := StrTran(cVal, as[1], as[2]) })
нигде нет перекодировок, символы взяты как есть

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2847
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.19 09:29. Заголовок: PS главное использов..


PS
главное использовать при формировании aSim hb_Utf8Substr() для выделения символов из строк, а не Substr()

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 31 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 168
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет