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

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

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

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

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

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

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

Винда у меня англоязычная, но даже установка языкового пакета не помогла...
Мы делили апельсин - много наших полегло...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

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

Сообщение dadreamer »

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

У меня была похожая фигня с иероглифами, когда ставил :labview: 2010 на Linux. Однако :labview: заменял вообще любую кириллицу (заголовки контролов, лэйблы и т.д.), а английские буквы печатались нормально. Я не смог это побороть, поставил более новый :labview: , там стало всё ок.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

dadreamer, кракозяблики ))
Локаль менял, не помогло...
В целом, мне все это нужно для перевода пользовательского интерфейса на несколько языков, "на лету" - т.е. словарь будет храниться в файле, и в соответствии с выбранным языком будет подгружаться перевод.
Локаль помогла в том, что тогда правильно отображаются символы, если перевод подгрузить из файла, и присвоить его значение контроллу динамически (например, установить значение Caption текста).
Но писать в файл вручную лень, поэтому хотелось иметь какой-то юзер интерфейс, который бы в этом помог...
Есть платные тулкиты, но они или дорогие, или не совсем удобно работают...
Интерестно, это с :labview: только такая проблема? А если посмотреть в сторону создания интерфейса при помощи питона (PyQt), или C# (WPF / WinForms) - там тоже такая головная боль будет?..
Мы делили апельсин - много наших полегло...
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

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

Сообщение IvanLis »

Однажды пришлось работать с 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
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

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

Сообщение dadreamer »

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

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

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

dadreamer писал(а):Насколько я знаю, Unicode поддерживается в современных версиях MSVS, да и в других средах давно тоже. GUI на питоне я бы не стал писать, на C# или плюсах - почему бы и нет... Правда, фреймворк войдёт в зависимости, и не будет привычных LabVIEW'шных контролов. Хотя в том же Qt есть довольно богатые коллекции инженерных контролов. Тут главное продумать всю коммункацию между приложениями и оценить трудозатраты.
Сейчас задумуюсь над тем, чтобы попробовать создать :labview: код для работы с виайками для динамического перевода, с них сделать билд .NET Assembly, и подключить его к С#. Однако, не уверен что можно будет использовать функционал VI Server тогда...
Мы делили апельсин - много наших полегло...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

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

Сообщение dadreamer »

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

Если уж писать GUI на чём-то, отличном от :labview: , то я бы это оформил в виде двух экзешников: процесс с GUI на .NET и процесс логических операций, а связь через IPC или CLI (помнится, в последних версиях :labview: были какие-то подвижки в этом плане). Процесс с логикой можно сделать скрытым в релизном варианте. Если не планируете гонять какие-то сложные типы данных по каналу коммуникации (например, массивы кластеров или иные нативные типы данных LV), то проблем быть не должно. Хотя, конечно никто не запрещает оформить логику в виде .NET сборки (сборок), хозяин-барин :)
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Прочитал начало тренда и решил влезть в беседу.
Kosist писал(а):Уважаемые коллеги!

Есть такой вопрос - нужно чтобы в Tree View контрол, можно было вручну вводить английский и русскоязычный текст - то бишь, юникод символы...
это как? если нужно только рус/англ, то юникод тут вообще ни при чём.
Т.к . английские символы живут в первой половине кодовой страницы, кирилица - во второй.
Винда у меня англоязычная, но даже установка языкового пакета не помогла...
Вопрос решает не только пакет. но и указание не-юникод языка
много раз решал эту проблему в том числе делая многоязычные (но по факту двухязычные) интерфейсы.
Вот если будет три языка, тогда ваша дискуссия актуально, тоже много сталкивался
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

Artem.spb писал(а):Вопрос решает не только пакет. но и указание не-юникод языка
много раз решал эту проблему в том числе делая многоязычные (но по факту двухязычные) интерфейсы.
Вот если будет три языка, тогда ваша дискуссия актуально, тоже много сталкивался
Языков будет несколько (английский, чешский и китайский). Русский я привел для примера, т.к. с ним здесь больше сталкивались, чем с тем же чешским (наверное) - а проблематика одна и та же.
Дело не просто в отображении символов, а их вводе в Tree View / таблицу. :labview: использует стандарт UTF-16LE для отображения юникода (https://forums.ni.com/t5/Reference-Desi ... anguage=en). При вводе текст в контрол проблем особых нет - если правильно настроить винду. Для отображения такого текста в таблице, нужно указывать BOM - byte order mark. Но тогда происходит следующее: :labview: интерпретирует каждые два байта как один символ. Но если мы вводим текст в строку - то "стандартный" набор символов :labview: отображает используя один байт (введите в строку текст, и посмотрите на hex значение). Ну а потом, когда этот же текст отображается в таблице - :labview: "неправильно" парсит его содержимое. Но если каждый символ отображается и в строке двумя байтами - то тогда проблем не будет.
Сейчас мое решение - это вручную дописывать нулевые байты если символ отображается одним байтом, а потом отображать это в таблице; тогда работает... Но в этого решения есть другая проблема - как правильно прочитать текст с таблицы, если там есть нулевые байты, и мы не знаем это просто "дополнительные" байты, или пробелы...
Мы делили апельсин - много наших полегло...
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

В качестве апдейта: все очень плохо :dntknw:
Реализовал ввод в Tree View при помощи "промежуточной" строки - т.к. в строку можно без проблем писать спец. символы. Текст пишем в строку, а потом из строки программно записываем в ячейку древа. Потом при помощи алгоритма, добавляю нулевые байты там где нужно - т.е. при нормальном вводе текста можно отобразить спец. символы (тестирую на словацкой раскладке) без проблем. Но - "падает" :labview: . И довольно таки регулярно.
Подозрений несколько:
- все-таки ввод в строку юникода :labview: воспринимает болезненно;
- для обработки строки использую Update While Typing - т.е. часто и быстро выполняется структура событий, и строка сама по себе обновляется не очень "природным" способом (т.к. по умолчанию Update While Typing опция неактивная);
- Tree View тоже болезненно переносит запись символов другой раскладки.
Но каждая из причин должна бы работать нормально... Так что :suicide:
Мы делили апельсин - много наших полегло...
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

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

Сообщение Borjomy_1 »

Вот вам транслятор.
Вложения
to UTF8.vi
(22.65 КБ) 214 скачиваний
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

Borjomy_1, спасибо!
Но уже, кажется, проблема решилась сама собой...
1. Я убрал токен с ini файла (UseUnicode=TRUE) - он не нужен для этого.
2. Настроил винду как описано здесь - https://knowledge.ni.com/KnowledgeArtic ... 0019LdkSAE (то же самое работает и для Win10).
И все чудесным образом заработало - можно писать в таблицу или tree view в нужном языке, и все отобржается так, как нужно.
А я паниковал :crazy:
Мы делили апельсин - много наших полегло...
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Настроил винду как описано здесь - https://knowledge.ni.com/KnowledgeArtic ... 0019LdkSAE (то же самое работает и для Win10).
почти месяц назад я предложил этот вариант, и получил ответ
Языков будет несколько (английский, чешский и китайский).
За месяц языки самоустранились? :)
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

Artem.spb писал(а):
За месяц языки самоустранились? :)
Поменялось понимание задачи, и кейсы использования :wink:
Мы делили апельсин - много наших полегло...
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»