:: Visual Foxpro, Foxpro for DOS
Re: Символы транскрипции на Фоксе
Wild ZAY
Автор

Сообщений: 5036
Откуда: 68 регион
Дата регистрации: 13.09.2004
Фигасе! Куда я попал со своими 3 классами ЦПШ!!
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Щас тебуб еще про HTML5 напоют - ты их не слушай - ты делай


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Ну так попробуй сам, если не веришь. Только IE или ричтекст - однозначно больше никто.
Я иногда пользовался Microsoft Forms 2.0 Textbox

Щас попробовал. Что-то не получается полноценной работы. Кроме как бросить юникод-символы копированием и видеть их нормально - больше ничего не получается. Значит, пользовался чем-то платным или знал какой-то секрет, но забыл...

Вот, обнаружил:
Я работал с ним не в Unicode, а в UTF-8 через SYS(3101), что для меня (и для этой темы) в принципе было одно и то же. Кроме того, между Unicode и UTF-8 можно легко выполнять взаимные конвертации посредством STRCONV().

Вот здесь есть описание:
www.programmersheaven.com
В частности в разделе "Unicode in Desktop forms"



Исправлено 6 раз(а). Последнее : akvvohinc, 07.10.10 16:33
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
akvvohinc
Я работал с ним не в Unicode, а в UTF-8 через SYS(3101), что для меня (и для этой темы) в принципе было одно и то же.

Ну в данном случае как раз-таки не одно и то же. Поскольку в транскрипции используются знаки далеко не тривиальные. См. например: ru.wikipedia.org
К тому же обычно пользователю нужно скажем вводить текст "как в ворде" и все тут. А полноценный ввод с клавиатуры, хотя и с рядом извращений, возможен бесплатно пожалуй только в ричтекстбоксе, формируя rtf. Такова уж специфика фоксовой обработки клавиатурных нажатий, использующая для этого не-юникодовскую библиотеку винды, отчего например приходится блокировать ввод с keypress, иначе не выходит.
С отображением же намного проще. Тут можно и в ричтекстбоксе с rtf, и в IE с html, как в вышеприведенном примере Пивы. Но при всем при том - даже всего лишь обычный нормальный вывод всех юникодов в какие-то еще иные контролы на мой взгляд не организуешь. Понятно, что всякие там вставки из буфера не более, чем игрушка.
Кстати по приведенной ссылке (как пример работы в юникоде на форуме ее дублируют уже раз двадцатый кажется ), если не вдаваться в подробности, похоже однозначная рекомендация - использовать IE, если я правильно понял. ;)


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Wild ZAY
Фигасе! Куда я попал со своими 3 классами ЦПШ!!

А вот не надо было в транскрипцию лезть.
Если хочешь еще большего "фигасения", так вот это почитай: ru.wikipedia.org
Что же насчет CSS, то не слушай Пиву - там все довольно просто.
Даже накидал вчера для интереса несложный рабочий примерчик на основе приведенного пивиного кода, но с добавлением стилей. Если любопытно, могу показать буквально с пояснениями на пальцах. Ну а ежели нет, так нет.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
krot_u

Сообщений: 1760
Откуда: Екатеринбург
Дата регистрации: 18.08.2005
Цитата:
Ну а ежели нет, так нет.
Crispy
Таки да!
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
piva
Щас тебуб еще про HTML5 напоют ...
А надо?


------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Уже нет


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
piva
Уже нет

Уже в смысле ещО?
Так не понял - автору тоже уже ничего вообще не надо? Или может просто он что-то делает.
А чем это кстати связаны HTML5 и CSS? У меня вот глянул - вроде они ничем и не связаны. Несколько строк добавил всего лишь к примеру. Всего лишь классирование стилей для уменьшения кода html в окне.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
akvvohinc
Я работал с ним не в Unicode, а в UTF-8 через SYS(3101), что для меня (и для этой темы) в принципе было одно и то же.

Ну в данном случае как раз-таки не одно и то же. Поскольку в транскрипции используются знаки далеко не тривиальные.

В теме речь идет о транскрипции слов английского языка для ребенка. Какой конкретно знак этой транскрипции не может быть выражен в UTF-8?

Цитата:
А полноценный ввод с клавиатуры, хотя и с рядом извращений, возможен бесплатно пожалуй только в ричтекстбоксе, формируя rtf. Такова уж специфика фоксовой обработки клавиатурных нажатий, использующая для этого не-юникодовскую библиотеку винды, отчего например приходится блокировать ввод с keypress, иначе не выходит.
А вот с этого места поподробнее. Что такого я могу ввести в ричтекстбокс, что нельзя аналогичным образом ввести в MS Form Textbox? Вопрос не праздный, а представляет практический интерес.

Цитата:
Но при всем при том - даже всего лишь обычный нормальный вывод всех юникодов в какие-то еще иные контролы на мой взгляд не организуешь. Понятно, что всякие там вставки из буфера не более, чем игрушка.
Если не упирать на слово "все юникоды", то какой из допустимых кодов UTF-8 нельзя вставить в свойство Text контрола MS Form Textbox обычным присвоением?

А вот ответный вопрос.
А легко ли программно заполнить поле таблицы, которое должно хранить данные в формате RTF уже имеющимися Unicode-данными, легко ли выполнить обратное преобразование из RTF в Unicode. Это я уж спрашиваю для себя. Мне бывает нужно брать инфу с сайта, отображать/изменять в программе, хранить ее, а потом выводить в html. Наверно для этого потребуется хорошо разобраться в rtf-формате. А есть ли в этом смысл (преимущества), если от контрола не требуется ничего, кроме простого ввода/вывода необходимых знаков?
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
akvvohinc
В теме речь идет о транскрипции слов английского языка для ребенка. Какой конкретно знак этой транскрипции не может быть выражен в UTF-8?.

Ну хотя бы посмотри и з пристегнутого текстового файла, выбрал на вскидку основные символы для английского словаря. Хотя не уверен, что выбрал все.

Цитата:
А вот с этого места поподробнее. Что такого я могу ввести в ричтекстбокс, что нельзя аналогичным образом ввести в MS Form Textbox?

Ну для примера скажем юникоды каких-то азиатских языков, африканских, да мало ли. ;) Для европейских обычно вполне хватает и правильного выбора свойства Fontcharset - недоработанного к сожалению до конца предка юникодов. "К сожалению" - потому что иначе бы у фокса было бы намного меньше проблем с языками. Fontcharset же годится только лишь для Европы и Турции. И частично (сильно урезано) - для Дальневосточных стран.

Цитата:
Если не упирать на слово "все юникоды", то какой из допустимых кодов UTF-8 нельзя вставить в свойство Text контрола MS Form Textbox обычным присвоением?

На примере прицепа - UTF-8 все же несколько ограничен.

Цитата:
А вот ответный вопрос.
А легко ли программно заполнить поле таблицы, которое должно хранить данные в формате RTF уже имеющимися Unicode-данными, легко ли выполнить обратное преобразование из RTF в Unicode. Это я уж спрашиваю для себя. Мне бывает нужно брать инфу с сайта, отображать/изменять в программе, хранить ее, а потом выводить в html. Наверно для этого потребуется хорошо разобраться в rtf-формате. А есть ли в этом смысл (преимущества), если от контрола не требуется ничего, кроме простого ввода/вывода необходимых знаков?

Преимущество - работа как если бы это был полностью юникодовский контрол. Ограничения тут -не со стороны контролов - а со стороны самого фокспро. Как и писал уже - его ввод KeyPress имеет собственное, совершенно тут ненужное, обрезание "лишних" байтов. Отчего будут вводиться знаки вопроса. И из-за чего требуются некоторые финты.
Далее, структура RTF позволяет вводить и хранить юникоды в таком же почти виде, как и в html-коде. Разве что нужна небольшая процедурка для вставки и выделения. Другое дело, что хранить можно в двух видах, я пока не пришел к окончательному решению, какой лучше. Первый - в виде RTF-кода. Это удобнее, не требует никакой обработки при общении с окном ввода-вывода. Но требует больше места в мемо. И второй - хранить в двоичном виде. Но тогда надо несколько больше обработок, чтобы гонять туда-обратно. Какой лучше видимо можно понять только погоняв оба в работе. Но пока что проект не доведен до идеала. Поскольку решил сделать все это в виде класса как бы универсального "юникодовского" текстбокса. И это уже естественно становится несколько сложнее организовать, нежели одиночное конкретное решение, создавая по ходу различные мелкие и не мелкие проблемы. При этом одна из проблем - проблема времени.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 08.10.10 15:55
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
И вот собственно несколько доработанный приводившийся выше пример. Возможно только надо бы прокомментировать добавленное для тех, кто не знает что такое стили в html.
Понятие таблицы стилей CSS в html существует давно и намного упрощает форматирование объектов html-страницы. Т.е. достаточно один раз описать в секции стилей свойства объекта (шрифт, цвет, положение и т.п.) в виде собственного класса, после чего в дальнейшем тексте можно уже просто указывать имя данного класса, при этом объект будет отображаться как было задано в определении его класса. В общем-то ничего нового для любого программиста в таком способе нет. Стили можно как подгружать из внешнего текстового файла, так и вставлять в сам html-файл в виде секции стилей, определяемой соответствующими тэгами - начинающим <style> и завершающим </style>.
Определения классов имеют вид: имя_класса{свойство1; свойство2; ... свойствоN;}
Есть стандартные имена, совпадающие с именами соответствующих тэгов форматирования страницы, например body - для всего тела страницы, если в дальнейшем не определено дополнительно для ее объектов. Затем: a - для тэга абзаца <a> ... </a> или p - для тэга параграфа <p> ... </p>.
Все их свойства можно переопределить, если указать в секции стилей. Неуказанные свойства остаются теми же, что по умолчанию.
Если же задать новое имя для своего класса, все перечисленные свойства (цвет, шрифт, отступ, бордюр, выравнивание и пр.) всегда будут применяться при указании этого класса уже в тексте тела страницы. Неуказанные свойства берутся по умолчанию (по стандарту), либо из перечисленных в начале при задании основного класса (body) тела страницы.
Далее по каждой строке в секции стилей (подгружаемой всегда в начале html-страницы) - небольшие пояснения, что собственно делает эта строка.
О свойствах классов, определяемых в секции стилей можно почитать в любой справке по CSS. Некоторые, чаще всего применимые свойства, как раз и приведены здесь. Знающим английский, со словарем или без, думаю вполне будет понятно их назначение.

imgfile = (HOME()+"\Graphics\Bitmaps\Assorted\SPEAKER.BMP")
Declare integer PlaySound in winmm.dll string, integer, integer
Public o
o=CreateObject("form1")
o.show()
Define Class Form1 as Form
Add Object ie as OleControl with OleClass="Shell.Explorer.2", width=300, height=200
Procedure ie.init
With this
.navigate("About:blank")
EndWith
Procedure ie.beforenavigate2(pdisp, url, flags, targetframename, postdata, headers, cancel)
With this
If url="my://sound"
playsound("systemexit",0,0)
cancel=.t.
EndIf
EndWith
procedure Init
With this.ie.document
* начало определения стилей:
.write([<style type="text/css">])
* параметры всего тела страницы не переопределенного какими-либо классами:
.write([body{font-family:"Lucida Sans Unicode",sans-serif; font-size:10pt; color: #000000;}])
* параметры переопределения стандартного класса с зарезервированным именем a:
* (ну здесь этого не нужно, просто для примера)
.write([a{font-weight:bold; color: #ffffff;}])
* параметры своего класса с именем wrd:
.write([.wrd{vertical-align:5pt; color: #000000;}])
* параметры своего класса с именем trn:
.write([.trn{vertical-align:5pt; color: #ff0000;}])
* параметры переопределения класса img для картинки с динамиком (например пусть все без бордюра):
.write([img{border-style:none;}])
* завершение определения стилей:
.write([</style>])
* начало тела страницы:
.write(this.ie.word_trans("word ", "[w&#230;d]"))
.write(this.ie.word_trans("transcription ", "[tr&#230;n'skrip&#643;(&#601; )n]"))
EndWith
PROCEDURE ie.word_trans
LPARAMETERS cWord, cTrans
RETURN "<a class='wrd'>"+cWord+"</a><a class='trn'>"+cTrans+"</a><a href='my://sound'>;
<img src='"+imgfile+"'alt='послушать произношение'></a><br>"
ENDDEFINE

Дополнительно к данному случаю - добавил процедуру word_trans, в которую передаются два параметра - само слово и его транскрипция, что позволяет например сканировать таблицу с этими полями, делая вывод в окно через эту готовую процедуру.

Ко всему сказанному можно добавить - что структура html допускает писать весь текст страницы целиком в одну строку. Что при использовании данного ole-объекта на форме фокспро позволяет весь нужный текст загружать всего лишь одной командой write(). Такое может оказаться очень удобным - достаточно скопировать нужный кусок кода html и вставить его между скобками этой команды, например так:
.write(" ;
<a class='wrd'>Транскрипция </a> ;
<a class='trn'>['&#230;pl]</a> ;
<a href='my://sound'> ;
<img src='c:\app\img.gif' alt='послушать произношение'> ;
</a> ;
")

Т.е. наглядно используется привычный синтаксис html, разве что в конце каждой строки надо добавить перенос в виде точки с запятой, поскольку это все-таки текст внутри функции ole-объекта фокспро.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 08.10.10 15:43
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Crispy
akvvohinc
В теме речь идет о транскрипции слов английского языка для ребенка. Какой конкретно знак этой транскрипции не может быть выражен в UTF-8?.

Ну хотя бы посмотри и з пристегнутого текстового файла, выбрал на вскидку основные символы для английского словаря. Хотя не уверен, что выбрал все.

Цитата:
А вот с этого места поподробнее. Что такого я могу ввести в ричтекстбокс, что нельзя аналогичным образом ввести в MS Form Textbox?

Ну для примера скажем юникоды каких-то азиатских языков, африканских, да мало ли.
Ну, раз уж дело дошло до программной реализации, то вот и мой пример:
PUBLIC oform,k_font,fontname1,afont1
DIMENSION aFont1[1]
= AFONT(aFont1)
m.k_font = ALEN(aFont1)
m.fontname1 = 'Microsoft Sans Serif'
* Определение строк в кодах Unicoda. Нужна бы функция, обратная CREATEBINARY(), но не знаю такой
* 7400 - это hex-код буквы "t" в Unicode
m.text1 = s2uni('74007200E6006E00B400730063007200690070002B222800590229006E00') && транскрипция слова transcription
m.text2 = s2uni('6B0283028B028C028D029202A402A7025102540259025B02') && еще несколько символов транскрипции
m.text3 = s2uni('1D4EDC9145D1F0304C059C06DC052309DA10') && символы "экзотических" алфавитов
= SYS(3101,65001)
oform = CreateObject("form1")
oform.show()
FUNCTION s2uni
PARAMETERS s
LOCAL ret,i
m.ret = ''
FOR m.i=1 TO LEN(m.s) STEP 2
m.ret = m.ret+CHR(EVAL('0x'+SUBSTR(m.s,m.i,2)))
ENDFOR
RETURN STRCONV(m.ret,10) && Unicode -> UTF-8
ENDFUNC
DEFINE CLASS form1 AS Form
width = 600
height = 150
nofont = 1
ADD OBJECT btnFontname AS Commandbutton WITH ;
top = 100,;
left = 230,;
width = 130,;
height = 40,;
caption = 'Change Fontname'
ADD OBJECT label1 AS label WITH ;
top=10, left=10, autosize = .T.
ADD OBJECT mstext1 AS OleControl WITH OleClass="forms.textbox.1", ;
top=30, left=10,width=580, height=35, tabstop = .F.
PROCEDURE init
this.assign(thisform.mstext1,m.fontname1)
this.label1.caption = this.mstext1.fontname
ENDPROC
PROCEDURE assign
PARAMETERS otext,fontname
WITH otext
.fontname = m.fontname
.fontbold = .T.
.fontsize = 12
.textalign = 1
.specialeffect = 0
.borderstyle = 0
.locked = .T.
.text = m.text1+' '+m.text2+' '+m.text3
ENDWITH
ENDPROC
PROCEDURE btnFontname.click
thisform.nofont = MAX((thisform.nofont+1)%m.k_font,1)
thisform.mstext1.fontname = aFont1[thisform.nofont]
thisform.label1.caption = aFont1[thisform.nofont]
ENDPROC
ENDDEFINE

Правая группа символов - это и есть армянско-грузинско-ивритско-вьетнамско-китайско-японско-корейские знаки (может где-то и приврал немного). Все еще не хватает ребенку для правильного произношения английского? Могу добавить "телеграфный символ для 17-го дня" и т.д. и т.п.

Если некоторые символы при некоторых фонтах не видны, то это не проблема контрола. У меня сейчас установлено по крайней мере 3 фонта, в которых все предлагаемые символы отображаются должным образом:
Microsoft Sans Serif
Arial Unicode MS
Lucida Sans Unicode

Ну так какой еще азиатско-африканский символ надо отобразить?



Исправлено 3 раз(а). Последнее : akvvohinc, 08.10.10 22:09
Ratings: 0 negative/1 positive
Re: Символы транскрипции на Фоксе
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если я правильно понял пассаж насчёт "обратного CREATEBINARY", хотя я в упор не понимаю какое отношение эта функция имеет к проблеме varbinary/blob в/из char, то наверное нужно напомнить про
text1 = 0h74007200E6006E00B400730063007200690070002B222800590229006E00
Ну а уж если именно "функцией", то видимо EVAL("0h"+ строка с хекскодами)


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Да, Игорь, пассаж мой может и был некорректным, но понял ты его совершенно правильно!
В оправдание могу лишь сказать, что недавно была тема, где я писал что-то типа:
CHR(0xC9)+CHR(0xD0)
вместо 0hC9D0, а ты меня не поправил. И вот к каким печальным последствиям это привело...



Исправлено 1 раз(а). Последнее : akvvohinc, 09.10.10 01:39
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Wild ZAY
Автор

Сообщений: 5036
Откуда: 68 регион
Дата регистрации: 13.09.2004
Так, наконец-то сел сейчас за программу. Начал просматривать вариант, предложенный piva. Всё бы ничего, но Фокс не воспринимает юникодовские коды с 400 до 899. Насколько я понял, это нельзя уже обойти
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
А че их обходить - посмотри как написано &#230 вот такие и вставляй или храни их в utf-8 формате

тогда у тебя &#400 к примеру


------------------
Часто бывает так, что есть над чем задуматься, а нечем.




Исправлено 1 раз(а). Последнее : piva, 10.10.10 14:30
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
Wild ZAY
Автор

Сообщений: 5036
Откуда: 68 регион
Дата регистрации: 13.09.2004
piva
А че их обходить - посмотри как написано &#230 вот такие и вставляй или храни их в utf-8 формате
тогда у тебя &#400 к примеру

Я нашёл таблицу кодов, всё работает при подстановке &#...
Но до 400 кода.
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Олег, ну дальше то можно посмотреть типа "спецсимволы в html" там все расписано.


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Символы транскрипции на Фоксе
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Wild ZAY
piva
А че их обходить - посмотри как написано &#230 вот такие и вставляй или храни их в utf-8 формате
тогда у тебя &#400 к примеру

Я нашёл таблицу кодов, всё работает при подстановке &#...
Но до 400 кода.

Цитата:
Если некоторые символы при некоторых фонтах не видны, то это не проблема контрола. У меня сейчас установлено по крайней мере 3 фонта, в которых все предлагаемые символы отображаются должным образом:
Microsoft Sans Serif
Arial Unicode MS
Lucida Sans Unicode

Попробуй поиграть с фонтами, хотя у меня и с обычным Arial'ом нормально отображаются коды, например с 401 по 403, которые я добавил в код Вадима.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика