Страница 1 из 2
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 25 Август 2025, 17:08
				 Игорь Столяров
				Всем привет !
Все знают, что если не установить в региональных настройках Windows русскую кодировку для Non Unicode
программ - то в софте собранном на Clarion будут кракозябры. Что нормально и логично - здесь всё правильно.
Ситуация повторяется у юзеров регулярно и выглядела примерно вот так (сборка C10 / C11):
Каково же было моё удивление, когда мне прислали снимок с аналогичной ситуацией для программы собранной в C12:
Т.е. проблема с кодировкой осталась, но только в полях ввода ... 
И если появятся анонсированные строки USTRING - то наверно всё будет вообще OK ?
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 25 Август 2025, 17:25
				 finsoftrz
				Они отказались от USTRING, написали, что обычный STRING будет поддерживать.
А попробуйте что-нибудь иероглифами в промпте написать.
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 25 Август 2025, 18:30
				 Игорь Столяров
				finsoftrz писал(а): 25 Август 2025, 17:25
А попробуйте что-нибудь иероглифами в промпте написать.
 
Так это же мне юзеры присылают.
Я им скопипастил инструкцию с картинкой по установке кодовой страницы для Non Unicode программ и у них всё OK.  
finsoftrz писал(а): 25 Август 2025, 17:25
Они отказались от USTRING, написали, что обычный STRING будет поддерживать.
 
Ну тогда есть подозрение, что мы просто пересоберём с новым RTL проекты С12.1 и они уже будут с поддержкой Unicode.  

 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 25 Август 2025, 18:54
				 finsoftrz
				Ага, и перестанут работать. Если это вообще когда-нибудь случится.  

 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 25 Август 2025, 18:55
				 finsoftrz
				Игорь, если не секрет, зачем Вам юникод?
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 25 Август 2025, 19:09
				 Игорь Столяров
				finsoftrz писал(а): 25 Август 2025, 18:55
Игорь, если не секрет, зачем Вам юникод?
 
Ну у нас есть русскоговорящие пользователи в Евросоюзе и Арабских странах.
Их немного - но они есть. А вот в Украине, Республике Беларусь, Средней Азии - уже десятки.
Возникающие вопросы с кодировкой конечно решаемы ... но лучше бы они не возникали.  

 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 8:32
				 Губин Игорь
				А ларчик-то просто открывается!  
 
Это работает FONT:Charset. А если правильно его указать, то и в полях ввода будет... Я такое делал на 9, 10, 11...
В рантайме есть некоторые глюки с этим, но вполне обходимые.
Не приписывайте велосипедистам работу, которую они не делают  

 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 8:39
				 Игорь Столяров
				Губин Игорь писал(а): 26 Август 2025, 8:32
Это работает FONT:Charset. А если правильно его указать, то и в полях ввода будет
 
Научите ! Я бы с радостью заюзал вариант, который бы работал без установки кодировки для Non Unicode программ !  

 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 9:13
				 Губин Игорь
				Игорь Столяров писал(а): 26 Август 2025, 8:39
Научите ! Я бы с радостью заюзал вариант, который бы работал без установки кодировки для Non Unicode программ !
 
Да воскурим мануал, да явится нам просветление в виде описания...
FONT([typeface] [,size] [,color] [,style] [,charset ])
typeface
 A string constant containing the name of the font (PROP:FontName, equivalent to {PROP:Font,1}). If omitted, the system font is used.
 
charset
 An integer constant or constant expression or EQUATE specifying the character set for the specified FONT (PROP:FontCharSet) or (PROP:Font,5). This provides support for international character sets. If omitted, the default charater set for the FONT is used.
Для всех, я подчёркиваю, ВСЕХ, элементов окна/отчёта (включая само окно), кроме IMG  
 , указываете CHARSET:Cyriilic и имя фонта TrueType. Вот и все дела...
Этот кусок в рантайме, как я уже много раз писал 

 , порождение сумрачного гения российского программиста  

 . Он об этой идее писал мне ещё в ФИДО, когда уходил к велосипедистам. Т.ч. работает надёжно, хоть и не без некоторых глюков.
У меня есть тестовое окно со всем возможными элементами и CHARSET:Arabic. Каждый раз после выхода обновления рантайма я на нём тестирую возникшие/исчезнувшие глюки работы с CHARSET
P.S. Хорошо ещё и для System перед открытием первого окна указать подобное.
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 10:50
				 Игорь Столяров
				Губин Игорь писал(а): 26 Август 2025, 9:13
Для всех, я подчёркиваю, ВСЕХ, элементов окна/отчёта (включая само окно), кроме IMG,
указываете CHARSET:Cyriilic и имя фонта TrueType. Вот и все дела...
 
Понятно. Естественно таких глупостей в примерах первого сообщения никто не делал, и русский текст есть. 

Подозреваю, что это прибамбасы для AnyScreen и к обычным с сборкам Win x32 отношения не имеет.
Что касается управления кодировкой - то это неоднократно обсуждалось и используется.
Код: Выделить всё
  System{Prop:CharSet}     = Charset:Cyrillic
  System{Prop:FontCharSet} = Charset:Cyrillic
  System{Prop:FontName}    = 'Arial'  ! КОСТЫЛЬ ОШИБКИ В РЕЛИЗЕ 1384  
Собственно на этом и всё ...
И ещё раз для тех кто бегло пишет и копипастит, но к сожалению ещё не читает. 

Показана разница в отображении окон с различными версиями Clarion (RTL)
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 11:32
				 finsoftrz
				Подозрения не обоснованы.  

  Попробуйте сделать простую функцию, которая обходит все контролы текущего окна и явно для них (а не для system) устанавливает тип шрифта и кодировку. Вызовите ее после открытия окна.
То, что рантайм с12 начал выводить кириллицу в ряде контролов, с большой долей вероятности связано с тем, что в нем указанный алгоритм включили по умолчанию, и никакого отношения к юникоду это не имеет.
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 11:43
				 Губин Игорь
				Игорь Столяров писал(а): 26 Август 2025, 10:50
Понятно. Естественно таких глупостей в примерах первого сообщения никто не делал, и русский текст есть. 
Подозреваю, что это прибамбасы для AnyScreen и к обычным с сборкам Win x32 отношения не имеет.
 
Это делалось для того, чтобы русский текст отображался в окнах и отчётах 
десктопных приложений под самыми различными локализациями самых различных версий виндов, не требуя каких-либо телодвижений от пользователя по их настройке под приложение. Без этого крякозябры могут проявляться, даже, в зависимости от установленных обновлений русскоязычных windows, не говоря уже о системных шрифтах.
Т.е., сделав как сказано, вы можете быть уверены, что, с учётом глюков на отдельных видах контролов (зависит от версии Clarion, обход проблемы обрабатывается шаблоном), единственное, где может не быть русских букв, это заголовок окна, и плевать, что там за настройки у пользователя, хоть китайские.
finsoftrz писал(а): 26 Август 2025, 11:32Попробуйте сделать простую функцию, которая обходит все контролы текущего окна и явно для них (а не для system) устанавливает тип шрифта и кодировку. Вызовите ее после открытия окна.
 
Увы, в рантайме были глюки, при которых это не всегда помогало. Т.ч. пришлось выработать привычку изначально прописывать вручную в структуре окна. Может, потом и поправили, но хорошая привычка осталась.
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 11:48
				 Игорь Столяров
				finsoftrz писал(а): 26 Август 2025, 11:32
которая обходит все контролы текущего окна и явно для них устанавливает тип шрифта и кодировку.
 
Будут задержки в открытии больших окон и блыманье. 
finsoftrz писал(а): 26 Август 2025, 11:32
и никакого отношения к юникоду это не имеет.
 
Пёс с ним, с юникодом. Если русский текст (кириллица) будет корректно отображаться и вводится - мне всё 
равно как это называется. А использование разных наборов символов в одном окне - действительно не нужно.
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 11:55
				 finsoftrz
				Игорь Столяров писал(а): 26 Август 2025, 11:48
finsoftrz писал(а): 26 Август 2025, 11:32
которая обходит все контролы текущего окна и явно для них устанавливает тип шрифта и кодировку.
 
Будут задержки в открытии больших окон и блыманье. 
 
Чтобы не было лишних перерисовок, надо это делать сразу после открытия окна, до первого display. Времени это не так много занимает. Вы сейчас же изменяете динамически размер шрифта в окнах, я думаю, это более затратная операция, так как надо еще вычислять и ресайзить контролы.
 
			 
			
					
				Clarion 12 & Unicode (только факты)
				Добавлено: 26 Август 2025, 12:02
				 Губин Игорь
				Игорь Столяров писал(а): 26 Август 2025, 11:48
Будут задержки в открытии больших окон и блыманье.
finsoftrz писал(а):
 
Если делать правильно, согласно описаному в мануале, то нет.
finsoftrz писал(а): 26 Август 2025, 11:55
Вы сейчас же изменяете динамически размер шрифта в окнах, я думаю, это более затратная операция, так как надо еще вычислять и ресайзить контролы.
 
Если делать правильно, согласно описаному в мануале, то совсем не затратная. Использую на очень "затратных" окнах в динамике при ресайзе.