Ввод Unicode символов в таблицу/tree view, и т.д.

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума

Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 01 Jul 2019, 17:25

Уважаемые коллеги!

Есть такой вопрос - нужно чтобы в Tree View контрол, можно было вручну вводить английский и русскоязычный текст - то бишь, юникод символы. Но проблема в том, что как только начинаю вводить юникод символы, :labview: их конвертирует в иероглифы. Более того, даже "нормальный" текст в латинице тоже изображается как попало.

На NI форуме есть большая тема об этом, но проблема в том что не все примеры работают, и именно пример с таблицей - не работает (https://forums.ni.com/t5/Reference-Desi ... anguage=en).

Сталкивался ли кто-нибудь с подобным? Потому что просто изобразить текст в юникоде можно без проблем - вручную задать caption, и т.д. А вот именно как организовать ввод текста в таблицу, чтобы все изображалось правильно?

Винда у меня англоязычная, но даже установка языкового пакета не помогла...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby dadreamer on 01 Jul 2019, 18:51

Kosist wrote:иероглифы

Реально иероглифы или просто кракозяблики? :) Покажите, плиз, картинку. Если второе, то можно попробовать подобрать кодировку. С первым сложнее. Не пробовали менять шрифты в настройках :labview: ? И насчёт языка ОС, локаль тоже меняли? https://www.isunshare.com/windows-10/ch ... ws-10.html

У меня была похожая фигня с иероглифами, когда ставил :labview: 2010 на Linux. Однако :labview: заменял вообще любую кириллицу (заголовки контролов, лэйблы и т.д.), а английские буквы печатались нормально. Я не смог это побороть, поставил более новый :labview: , там стало всё ок.
User avatar
dadreamer
professor
professor
 
Posts: 3326
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 02 Jul 2019, 07:38

dadreamer, кракозяблики ))
Локаль менял, не помогло...
В целом, мне все это нужно для перевода пользовательского интерфейса на несколько языков, "на лету" - т.е. словарь будет храниться в файле, и в соответствии с выбранным языком будет подгружаться перевод.
Локаль помогла в том, что тогда правильно отображаются символы, если перевод подгрузить из файла, и присвоить его значение контроллу динамически (например, установить значение Caption текста).
Но писать в файл вручную лень, поэтому хотелось иметь какой-то юзер интерфейс, который бы в этом помог...
Есть платные тулкиты, но они или дорогие, или не совсем удобно работают...
Интерестно, это с :labview: только такая проблема? А если посмотреть в сторону создания интерфейса при помощи питона (PyQt), или C# (WPF / WinForms) - там тоже такая головная боль будет?..
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby IvanLis on 02 Jul 2019, 14:02

Однажды пришлось работать с Unicode, это ад.
Был Рус, Анг, Китай (но подразумевало любой язык независимо от локали на ПК)
Использовал это: https://forums.ni.com/t5/Reference-Desi ... anguage=en

Что сейчас помню точно, это противопоказание использования Format Into String Function.
По этому лучше всего передавать коды (номер строки), а строку Unicode вставлять в контрол уже в последний момент в чистом виде.


Есть возможность совместить интерфейс QT и программный код :labview: , но мне переделывать было не вариант. По этому посмотрел и продолжил мух ловить в своем коде.
https://forum.qt.io/topic/90276/showdow ... -labview/6
User avatar
IvanLis
professor
professor
 
Posts: 4833
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 782
hardware VIP bloggers teachers

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby dadreamer on 02 Jul 2019, 15:40

Kosist wrote:Интерестно, это с :labview: только такая проблема?

Похоже что да, когда :labview: только разрабатывали, о поддержке Unicode никто и не задумывался, а когда Unicode вошёл в моду, менять исходники оказалось крайне геморно. Та поддержка, что в :labview: есть сейчас, это по сути надстройка над существующими функциями по работе со строками. Многие вещи остались недоработанными и вряд ли будут. В NXG постарались учесть все эти косяки и сразу сделать правильно. Надо бы, кстати, глянуть 3-ю версию, до сих пор руки не дошли поставить.

Насколько я знаю, Unicode поддерживается в современных версиях MSVS, да и в других средах давно тоже. GUI на питоне я бы не стал писать, на C# или плюсах - почему бы и нет... Правда, фреймворк войдёт в зависимости, и не будет привычных LabVIEW'шных контролов. Хотя в том же Qt есть довольно богатые коллекции инженерных контролов. Тут главное продумать всю коммункацию между приложениями и оценить трудозатраты.
User avatar
dadreamer
professor
professor
 
Posts: 3326
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 03 Jul 2019, 07:55

dadreamer wrote:Насколько я знаю, Unicode поддерживается в современных версиях MSVS, да и в других средах давно тоже. GUI на питоне я бы не стал писать, на C# или плюсах - почему бы и нет... Правда, фреймворк войдёт в зависимости, и не будет привычных LabVIEW'шных контролов. Хотя в том же Qt есть довольно богатые коллекции инженерных контролов. Тут главное продумать всю коммункацию между приложениями и оценить трудозатраты.

Сейчас задумуюсь над тем, чтобы попробовать создать :labview: код для работы с виайками для динамического перевода, с них сделать билд .NET Assembly, и подключить его к С#. Однако, не уверен что можно будет использовать функционал VI Server тогда...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby dadreamer on 03 Jul 2019, 08:34

Kosist wrote:Сейчас задумуюсь над тем, чтобы попробовать создать :labview: код для работы с виайками для динамического перевода, с них сделать билд .NET Assembly, и подключить его к С#. Однако, не уверен что можно будет использовать функционал VI Server тогда...

Я думал, C# будет использоваться только для написания интерфейса (+ коммуникация), а в :labview: будет остальная логика. Может, тогда эта тема пригодится: http://www.labviewportal.ru/viewtopic.php?p=57583 Через ActiveX можно получить доступ к VI Server, правда, не знаю, как будет работать это с Unicode.

Если уж писать GUI на чём-то, отличном от :labview: , то я бы это оформил в виде двух экзешников: процесс с GUI на .NET и процесс логических операций, а связь через IPC или CLI (помнится, в последних версиях :labview: были какие-то подвижки в этом плане). Процесс с логикой можно сделать скрытым в релизном варианте. Если не планируете гонять какие-то сложные типы данных по каналу коммуникации (например, массивы кластеров или иные нативные типы данных LV), то проблем быть не должно. Хотя, конечно никто не запрещает оформить логику в виде .NET сборки (сборок), хозяин-барин :)
User avatar
dadreamer
professor
professor
 
Posts: 3326
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Artem.spb on 03 Jul 2019, 17:40

Прочитал начало тренда и решил влезть в беседу.

Kosist wrote:Уважаемые коллеги!

Есть такой вопрос - нужно чтобы в Tree View контрол, можно было вручну вводить английский и русскоязычный текст - то бишь, юникод символы...

это как? если нужно только рус/англ, то юникод тут вообще ни при чём.
Т.к . английские символы живут в первой половине кодовой страницы, кирилица - во второй.

Винда у меня англоязычная, но даже установка языкового пакета не помогла...

Вопрос решает не только пакет. но и указание не-юникод языка
много раз решал эту проблему в том числе делая многоязычные (но по факту двухязычные) интерфейсы.
Вот если будет три языка, тогда ваша дискуссия актуально, тоже много сталкивался
Artem.spb
expert
expert
 
Posts: 1657
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 05 Jul 2019, 12:44

Artem.spb wrote:Вопрос решает не только пакет. но и указание не-юникод языка
много раз решал эту проблему в том числе делая многоязычные (но по факту двухязычные) интерфейсы.
Вот если будет три языка, тогда ваша дискуссия актуально, тоже много сталкивался

Языков будет несколько (английский, чешский и китайский). Русский я привел для примера, т.к. с ним здесь больше сталкивались, чем с тем же чешским (наверное) - а проблематика одна и та же.
Дело не просто в отображении символов, а их вводе в Tree View / таблицу. :labview: использует стандарт UTF-16LE для отображения юникода (https://forums.ni.com/t5/Reference-Desi ... anguage=en). При вводе текст в контрол проблем особых нет - если правильно настроить винду. Для отображения такого текста в таблице, нужно указывать BOM - byte order mark. Но тогда происходит следующее: :labview: интерпретирует каждые два байта как один символ. Но если мы вводим текст в строку - то "стандартный" набор символов :labview: отображает используя один байт (введите в строку текст, и посмотрите на hex значение). Ну а потом, когда этот же текст отображается в таблице - :labview: "неправильно" парсит его содержимое. Но если каждый символ отображается и в строке двумя байтами - то тогда проблем не будет.
Сейчас мое решение - это вручную дописывать нулевые байты если символ отображается одним байтом, а потом отображать это в таблице; тогда работает... Но в этого решения есть другая проблема - как правильно прочитать текст с таблицы, если там есть нулевые байты, и мы не знаем это просто "дополнительные" байты, или пробелы...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 22 Jul 2019, 23:28

В качестве апдейта: все очень плохо :dntknw:
Реализовал ввод в Tree View при помощи "промежуточной" строки - т.к. в строку можно без проблем писать спец. символы. Текст пишем в строку, а потом из строки программно записываем в ячейку древа. Потом при помощи алгоритма, добавляю нулевые байты там где нужно - т.е. при нормальном вводе текста можно отобразить спец. символы (тестирую на словацкой раскладке) без проблем. Но - "падает" :labview: . И довольно таки регулярно.
Подозрений несколько:
- все-таки ввод в строку юникода :labview: воспринимает болезненно;
- для обработки строки использую Update While Typing - т.е. часто и быстро выполняется структура событий, и строка сама по себе обновляется не очень "природным" способом (т.к. по умолчанию Update While Typing опция неактивная);
- Tree View тоже болезненно переносит запись символов другой раскладки.
Но каждая из причин должна бы работать нормально... Так что :suicide:
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Borjomy_1 on 25 Jul 2019, 14:05

Вот вам транслятор.
Attachments
to UTF8.vi
(22.65 KiB) Downloaded 52 times
Borjomy_1
expert
expert
 
Posts: 1901
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 329
VIP

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 25 Jul 2019, 20:21

Borjomy_1, спасибо!
Но уже, кажется, проблема решилась сама собой...
1. Я убрал токен с ini файла (UseUnicode=TRUE) - он не нужен для этого.
2. Настроил винду как описано здесь - https://knowledge.ni.com/KnowledgeArtic ... 0019LdkSAE (то же самое работает и для Win10).
И все чудесным образом заработало - можно писать в таблицу или tree view в нужном языке, и все отобржается так, как нужно.
А я паниковал :crazy:
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Artem.spb on 26 Jul 2019, 15:38

Настроил винду как описано здесь - https://knowledge.ni.com/KnowledgeArtic ... 0019LdkSAE (то же самое работает и для Win10).

почти месяц назад я предложил этот вариант, и получил ответ
Языков будет несколько (английский, чешский и китайский).

За месяц языки самоустранились? :)
Artem.spb
expert
expert
 
Posts: 1657
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

Re: Ввод Unicode символов в таблицу/tree view, и т.д.

Postby Kosist on 26 Jul 2019, 23:15

Artem.spb wrote:
За месяц языки самоустранились? :)

Поменялось понимание задачи, и кейсы использования :wink:
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students


Return to Общие

Who is online

Users browsing this forum: No registered users and 1 guest

cron