Почему то не получается ни надписи на кнопках сделать например на польском. ни выводить надписи. все диакритические символы при вводе заменяются на кирилические. Как быть в таком случае?
Этот топик читают: Гость
Ответов: 215
Рейтинг: 1
|
|||
карма: 0 |
|
Ответов: 4639
Рейтинг: 755
|
|||
Использовать эту версию пакета и компилятора: /topic/61538
|
|||
карма: 26 |
| ||
Голосовали: | z80 |
Ответов: 215
Рейтинг: 1
|
|||
Netspirit писал(а): Использовать эту версию пакета и компилятора: /topic/615381 я использую некоторые компоненты, которых нет в этой версии 2 надпись на кнопке например так и не удается изменить напрмер слово Zmienić записывается как Zmieniж |
|||
карма: 0 |
|
Ответов: 866
Рейтинг: 186
|
|||
z80 писал(а): Почему то не получается ни надписи на кнопках сделать например на польском. ни выводить надписи. все диакритические символы при вводе заменяются на кирилические. Как быть в таком случае? |
|||
карма: 18 |
| ||
Голосовали: | z80 |
Ответов: 215
Рейтинг: 1
|
|||
Как у вас это получилось?
|
|||
карма: 0 |
|
Ответов: 4639
Рейтинг: 755
|
|||
Использовался юникодный компилятор? Шрифт кнопки менялся на нестандартный?
Тут, вероятно, проблема в том, что среда HiAsm не является юникодной. Если текст кнопки хранить в схеме в виде HEX, и выводить на кнопку с помощью конвертера при запуске программы - отображается? Нужен какой-то способ предоставить ввод строковых свойств на схеме в виде Юникода. Теоретически, можно подправить кодогенератор, чтобы он по какому-то префиксу строки узнавал что это Юникод. А сама строка состояла бы из кодов символов, которые кодогенератор преобразовывал в корректные. Тогда была бы отдельная программка, в которой введённый текст преобразовывался в строку для свойств компонентов на схеме, например: "\u0123\u3456" Немного неудобно, но Юникодного HiAsm 4 мы вряд-ли увидим. Может, как-нибудь сделаю. Вообще-то, кодогенератор и сейчас такое может: после слеша указывается код символа ("\234\56\1234") Но кодогенератор нужно дорабатывать. Редактировалось 2 раз(а), последний 2025-03-02 22:47:18 |
|||
карма: 26 |
| ||
Голосовали: | z80 |
Ответов: 215
Рейтинг: 1
|
|||
Netspirit писал(а): Использовался юникодный компилятор?я пробовал компилятор но до компиляции дело не дошло. чреда то не поддерживает юникод. элементарнон надпись на кнопке не смог изменить. возможно попробую написать конвертер из юникода в коды символов. а потом использовать. |
|||
карма: 0 |
|
Ответов: 866
Рейтинг: 186
|
|||
z80 писал(а): Как у вас это получилось?HiAsm.NET |
|||
карма: 18 |
|
Ответов: 2324
Рейтинг: 681
|
|||
z80, есть еще один способ, но он мягко сказать через одно место, но для некоторых случаев подойдет. Делается так:
-Берется любой редактор шрифтов и заменятся нужные символы (чем то придется пожертвовать). -Устанавливает этот шрифт и пользуемся нужными символами. В Hiasm в редакторах будет к примеру Zmieni&, а в программе с измененным шрифтом будет - Zmienić |
|||
карма: 11 |
|
Ответов: 866
Рейтинг: 186
|
|||
z80, Можно и так
|
|||
карма: 18 |
|
Ответов: 4639
Рейтинг: 755
|
|||
Итак, в приложенном архиве поправленный файл CodeGen.dll, который понимает коды юникодных символов в строковых свойствах HiAsm.
То-есть, для юникодных символов, которые невозможно ввести на схеме HiAsm, поскольку среда является не-юникодной, можно указать их коды, например: "абвгд \9824\9827\9829\9830" Закройте HiAsm и закиньте содержимое папки "code" из архива в папку "code" моего пакета. В официальном кодогенераторе и предыдущих версиях моего распознавались только коды из 3-х цифр после обратного слеша до 255, например: "\13\165\220". После поправки распознаётся до 5-ти цифр с максимальным значением до 65535, например: \11234. Больше 65535 вставляется без преобразования (типа "\98765"). В связи с этим могут появиться побочные эффекты при компиляции схем официального пакета в моей версии пакета. Если в свойстве компонента было указано: "абвгд\255321" то официальный пакет выведет: "абвгдя321", где \255 преобразовано в символ "я" а в моем пакете выведет "абвгд?1", где "?" - какой-то там символ с кодом 25532. Решение - указать ведущие 0 после слеша, добив код до 5 символов: "абвгд\00255321". Тогда результат будет аналогичный. Соответственно, схемы с такими строками из моего пакета нужно будет поправить в обратном порядке для компиляции официальным пакетом. Юникодные символы там все равно не будут отображаться. Также юникодные символы будут потеряны при компиляции в моем пакете не-юникодными компиляторами. По-прежнему распознаются специальные последовательности \r, \n, \t. Если после обратного слеша "\" идет "r", "n", "t" или цифра, но их не надо распознавать как специальный символ, то надо удвоить слеш, например: "c:\Windows\\notepad.exe". Независимо от символов после 2-го слеша, два слеши подряд будут преобразованы в один, поэтому чтобы вывести двойной слеш "\\", надо указать 4 слеша: "\\\\" В архиве есть схема, которая поможет подготовить юникодную строку для вставки в свойства компонентов. Если вам нужно вставить в схему символы, которые HiAsm не поддерживает - получите их коды этой схемой. Схема должна компилироваться в юникодном режиме. Дополнительное изменение в кодогенераторе: строки длиной больше 254 символа теперь не помещаются в ресурсы. Вместо этого разбиваются в коде через символ соединения "+", что позволяет обойти ограничение Delphi на длину строковой константы. Соответственно, символ с кодом #0 ("\0") теперь сохраняется и в строках длиной больше 254. В официальном пакете последовательность "\0" во всех случаях обрезает строку. (Напомню: символ с кодом 0 также обрезает строку при выводе в оконные элементы и используется разве что при хранении бинарных данных в строковых свойствах). Потестируйте, если всё нормально, то выложу обновление пакета. CodeGen_for_Unicode_props.zip Редактировалось 1 раз(а), последний 2025-03-09 14:21:06 |
|||
карма: 26 |
|
Ответов: 147
Рейтинг: 3
|
|||
Из любопытства потестировал, брал символы отсюда https://olegon.ru/showthread.php?t=15700. Ошибок не обнаружил , не то, чем на самом сайте.
Польские символы отображаются, переводятся в код. |
|||
карма: 1 |
|
12