Вверх ↑
Этот топик читают: Гость
Ответов: 215
Рейтинг: 1
#1: 2025-03-02 16:46:37 ЛС | профиль | цитата
Почему то не получается ни надписи на кнопках сделать например на польском. ни выводить надписи. все диакритические символы при вводе заменяются на кирилические. Как быть в таком случае?
карма: 0

0
Ответов: 4639
Рейтинг: 755
#2: 2025-03-02 17:11:10 ЛС | профиль | цитата
Использовать эту версию пакета и компилятора: /topic/61538
карма: 26

1
Голосовали:z80
Ответов: 215
Рейтинг: 1
#3: 2025-03-02 18:20:22 ЛС | профиль | цитата
Netspirit писал(а):
Использовать эту версию пакета и компилятора: /topic/61538
попробовал но есть много проблем. и кстати так это мне не помогло.
1 я использую некоторые компоненты, которых нет в этой версии
2 надпись на кнопке например так и не удается изменить напрмер слово Zmienić записывается как Zmieniж
карма: 0

0
Ответов: 866
Рейтинг: 186
#4: 2025-03-02 20:22:24 ЛС | профиль | цитата
z80 писал(а):
Почему то не получается ни надписи на кнопках сделать например на польском. ни выводить надписи. все диакритические символы при вводе заменяются на кирилические. Как быть в таком случае?


карма: 18

1
Голосовали:z80
Ответов: 215
Рейтинг: 1
#5: 2025-03-02 20:47:27 ЛС | профиль | цитата
Как у вас это получилось?
карма: 0

0
Ответов: 4639
Рейтинг: 755
#6: 2025-03-02 22:14:00 ЛС | профиль | цитата
Использовался юникодный компилятор? Шрифт кнопки менялся на нестандартный?

Тут, вероятно, проблема в том, что среда HiAsm не является юникодной. Если текст кнопки хранить в схеме в виде HEX, и выводить на кнопку с помощью конвертера при запуске программы - отображается?

Нужен какой-то способ предоставить ввод строковых свойств на схеме в виде Юникода.
Теоретически, можно подправить кодогенератор, чтобы он по какому-то префиксу строки узнавал что это Юникод.
А сама строка состояла бы из кодов символов, которые кодогенератор преобразовывал в корректные.

Тогда была бы отдельная программка, в которой введённый текст преобразовывался в строку для свойств компонентов на схеме, например:
"\u0123\u3456"
Немного неудобно, но Юникодного HiAsm 4 мы вряд-ли увидим.
Может, как-нибудь сделаю.

Вообще-то, кодогенератор и сейчас такое может: после слеша указывается код символа ("\234\56\1234")
Но кодогенератор нужно дорабатывать.

Редактировалось 2 раз(а), последний 2025-03-02 22:47:18
карма: 26

1
Голосовали:z80
Ответов: 215
Рейтинг: 1
#7: 2025-03-03 00:03:30 ЛС | профиль | цитата
Netspirit писал(а):
Использовался юникодный компилятор?

я пробовал компилятор но до компиляции дело не дошло. чреда то не поддерживает юникод. элементарнон надпись на кнопке не смог изменить.
возможно попробую написать конвертер из юникода в коды символов. а потом использовать.
карма: 0

0
Ответов: 866
Рейтинг: 186
#8: 2025-03-03 06:23:24 ЛС | профиль | цитата
z80 писал(а):
Как у вас это получилось?

HiAsm.NET
карма: 18

0
Ответов: 2324
Рейтинг: 681
#9: 2025-03-03 09:47:14 ЛС | профиль | цитата
z80, есть еще один способ, но он мягко сказать через одно место, но для некоторых случаев подойдет. Делается так:
-Берется любой редактор шрифтов и заменятся нужные символы (чем то придется пожертвовать).
-Устанавливает этот шрифт и пользуемся нужными символами.
В Hiasm в редакторах будет к примеру Zmieni&, а в программе с измененным шрифтом будет - Zmienić
карма: 11

0
Ответов: 866
Рейтинг: 186
#10: 2025-03-03 12:38:02 ЛС | профиль | цитата
z80, Можно и так

Add(MainForm,2953706,84,98)
{
Width=339
Height=201
}
Add(BitBtn,688984,140,98)
{
Left=70
Top=55
Width=135
Height=50
Caption=""
Flat=1
Bitmap=[ZIPB634000078DAED99EB5753571AC63B5F6666B5AB53ED28A48E03387841451DA9A06BF056B5CA55F10242A4555118B00A4841A54AAB8282B46851A46345103ADCAC601593216A22342897006A8028211020242157CE7FF0CC7B68CBC00898DAA85D5DC95ABF2FD99B7D9EF7C939FB7DF661953F7FD16B831F0FC285D8413813BF7BCD69F0FBA33F8E0FFF300C031B366CD8B061C3860D1B366CD8B0F16AD0184CA892F5812F6E049FCFB7989646314C7D32F4990C686CE986E8CE0374B7D4C1A8EE185A5B6D64D0D2ADC31D5113CD9780A1F90CCD67C70C2606B23E06E2C61654096F41236F844ED70DB9C60061950C0F6A25D0773661C0A81BA1B7436D8498AE27B8231AA1A751CC479FAC0A268366709E89E823C6D2C6A2330EA0A9530F49ED03C8AA843068E4D031BAE7D6C07A32BC464B9028B4F0CC10C3CE2B1276767616931CE905AD380362AD0291C93C2C9EF731F8295CA8EEE50FAD7D4FC520852FC3BCC5D1343F020CCD67683E3BA6D032C81033F08A4C86A7DB2C4872A3D0D6C643AE440137CF0C1C088980BC341AC65ED908BDF9F754F04EE163DABCC523F4447AD9419CE109AD4232384F4B8889B1B4B1C87A8D882E952322E400323CDDA090E4A28D697B6E0DAC27C36BB404698F11A1851D70F4FD08F613DFC0C7418B909EB81BE9E9E9E322FC2E1F9A8E6A888C5A700F95C3F99D085C4BF4414FF585A1B5AB7B18245E6BC13BCE3B70881B0C46940C86EE31764CAE61902C62E0C13D041787B75197BD0D526939B2EBE4707049469477309E14EC80A1BB65707EBB4A8FA4EB2D08DC9F850D5E21F8342610E9C76290425AF611DCD0DD085BF53E2A337740D9F02D34F43722622C6D2C2DDD06EC28788260EF2824BB38405E970D2923FDD91A9252D2E1BB2F1D9BB8A1480A5B85F6CA4C30CA068BFC57F633B8D4C0606D74069CE7B9A1FC801FBA855FD3581F611E7FEF7A468DD6F29FDDC7780F7B30636F093C5684E0B8971BE4C22FC1A81BD14F6B3510D119222C704B408A1F0735B9FBA0D177423460B49AFFE369E8220FBF220F57479DC28C5973C13BEE0B754D2E5D434F0C8CEBA17980ED010CE28AEA3129F014C21DA78377348CC6682F63B4BF0AFFD97DEC58451BA6B84621766B307ABF4B84A9E71118F27780ED254451BD1EDB4F09B171FA4CE4C5FA533F29A567B3D76AFE8FA741471E3E240FC3B36E61CACA581CF375C4BDBC58BA065BABD1A2E7E0DB56153EB820C412C76024AC5B0B716E04B4CA5A1AEB7FE5FEF3DBE9FECE6F84BBD34A7CBE6B0398A6F360745D23B4B4923FBC7A254AB3BF86845F028DA61922B3CE6AFE8FA7C1FCA3177CEA1BE78A8410169DA35EC2A731CD33F7909F68278A1F2AB16CE32578BBAD47CA86B9681365C3A47EF4CAFD2F6D3661DB99EFE1F9D75948D8B8049585475079F32A2A2B2B47A5B5A9061ACA2122B3C16AFEB31AB693868DA421779F3F98AE1230C61EABE55036AFB5F79B71BE560DEFB02FF177FA9D6F1E5F4F99E1F22BF73F47ACC2D2233730F19DE978EBF53FC07EF204D8DBDB11F6A39212E50D8DF834449443ACE53FABC19F34EC220D570F522DE6DBB4F7A8AD7A16D0991934AB191CBCF83DDC371C45DCEA85109CD90BA6B78632ADF695F95F28D16313EDED0BA6CEC4D6A5B391F64928D24E7C86B4B4B421F61D4DC3FBBB0EE24F933CE85AE43F5D4B44D7B296FFAC062E6908220D05B101E4493979A27A2167B22B8D6A849EBE8DA5B3DFC3F1106FC8AE25C3A07A40633AABFBBF9CFC77779C84869C30486515A3D65E2163F0514E03963BBAE3749817F492B318E8EF1CA1A5526E42F43712CC9DB60927760643D3900911CD19CFFF874A3D365F94628B7F04D2DD1DD1D19043FECB9EA9E16C04ED3FD28B60F4CAC175D80CA067D753A821AC6D456BAD106AC5438BF2CF68C80D66FCBBA103B342CE63E56C6F9CFE872BF5934B34D66675FF03C97FAE3307D2B2039076DF1DB5F6BBDDF44C9649E1E0CC45B4DF1AC88BFF09634FEB082DB9352A6CF8AC021F4E9983D2042E65BA4ACA9FEA71FDAFEFD060FEC96AF80685228FEB0CA5B48CFCEF7EA686C3A14160AA4F522D3F9CA78D6C3DC4C182FB981F78022702E7E37EC1C19F957F86C3FE96CD2A1D0EDF6886EFA6E3F099BA1215E9BE504AF2C6F4FFAD3776C0CF7D0E8A52778269BD41F7866A3033445266984CBD64DDAC99C88D580765ED3760FADB2053991053DE8BE08058C4CF9C8AC7C25390EA25A3D6AED053BEACEBC234EE79BCB7220059DC25E864FB12ADA33531A8E965B0F78C008B56C7E1CB0DEE90E47F4ADAE4A4CD38425B6E52207A29979BB44A28D9CC4779C339E01236BFBF1637E26742F55848FEEB9FA961F3DA10DC88F281AAAD827C50A287C64A5A19F827FC0BD3E6AF4051DC722804740663D416E79FFF873DD7D413FBE85CE3BA301E07FDED71EBABDDD0773D187A1F32DCFF3FFEFE03B84C7544C2AEB51014A742C0BB8693F902AC4FCCC1E2775DE1E3EA8C38BF75B8722999C60A517095079F2345D8EEFF21727CDDA17C5048B5B78F79F67CA4EC47504E3D96052562EB624F14664440509685AB3C018E14091010F629FC97F84098B91BEAC6B251B5450579A028732F78D74B912F102031A704EFBA8623CE7F15EA7336A25FF9903430CFD4E04F1AE23C57E24ADE610804F928B92E40F85901D672A310B4DA158F4A0E816917FDA21EF0BF738D0E81694238D1B9267EF31CC8AFC40CBD0F195EA3935D38E5B235F8E8483C38E159E0B82CC4DB9339983DC381CE431EA82E4B477135E5E7C85C70DC0331D99E83D727D821217829D4D7126156B550EDA6316B379A07A0501B9051D18AA5FB2FC3C9C5151CFB49B0E77030C18E8308BFF9B897F501D4B21A980DDA51B5457D12073BCA769C590B3199FE6E86831D623DDEC47FCEEC86417D1F0366EDB8FEFFA4E10C6958B13F1F4E731680C3990C3BAAE5CD3F73B09FBB0C8AF243307635516FD659A517B7D0B926B74A81E5919F638BB70FB2B62D41D7E0B32F1BDAF7CA6FB720FBEC4DB4DE2906EFAE10A9D7EA907A260BA9A9A9F4FD17F47D1E541D0D7446D221FB7A3352B38B07C7586E97D39E26AFA22CAD818AD6AAEBD220EB421578C56550375F87593732633474E89177A7155F9CCD1E5A8385579C3D62BE25DACE7E918A3B79A9D47779437BC52FD130BC166BE6A1277D461CAEE884DFB62404CC9D8FBB5FED82FA51D973F7F7DF0206CAEA8F29AB4B9BDBF0585C05C3E03B4FDD0BB9563F3D77927E13C2332BE1B43206C9EB9D713FFFE3E7EEEFBF05D8F7E7A7C50C0EEF3981D3CB1641D198F7543EB434EBB412396512ECD973898827F68C2092D84E2C581388890E1E08747803DF7EB695CE20B7689FB3DE1990CD24A2F63E1C3E5A81C2731729ABE45156E97EA9BE5AAA41656070434E6782A47CF87A6EC4CDCC00CA87979F3BE71C392784874712B186F0189315C44EA22C2D064C27E52F639FD56A67DF415D79A4C4FAA01CA4C57C82CE8A6330F6C95FAAFF966A60FB4B27115F5087E981277160CB5F9ECA8796E61CF61950526F94C9BA8927846C4C1E130A42D3D3F5C33B8901B355DF41698C66B4CBFBD0D3A51CBCEF06CCA697EABFA51A067E9C9B25EC827BFC154C99F637246C994BF930F6A9FF97D97871FC94853ECFCC06AFE83CD44DDF3D95976CD8B061C3860D1BAF8EFF0235BC501C]
}

карма: 18

0
Ответов: 4639
Рейтинг: 755
#11: 2025-03-08 22:43:20 ЛС | профиль | цитата
Итак, в приложенном архиве поправленный файл 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

0
Ответов: 147
Рейтинг: 3
#12: 2025-03-10 10:57:21 ЛС | профиль | цитата
Из любопытства потестировал, брал символы отсюда https://olegon.ru/showthread.php?t=15700. Ошибок не обнаружил , не то, чем на самом сайте.
Польские символы отображаются, переводятся в код.
карма: 1

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)